efbe+2008-06-02 20:19:06--Hallo,
Mein Ansatz war bis jetzt der Folgende:
Zuerst die erste Datei in Spalten splitten... das funktioniert auch soweit.
Wenn ich dann allerdings nachsehen will ob das Wort in der 2. Datei vorkommt, gibt mir das Programm nichts mehr zurueck.
Meine Frage ist jetzt... was habe ich hier falschgemacht?
oder ist einfach mein kompletter Ansatz total bescheuert.
... in dem Fall... was waere ein guter Ansatz fuer mein Problem?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use strict 'vars';
{
my @words;
my $file_in;
my $file_test;
my @columns;
my @datafile;
my $line;
my @koroesi;
my %koroesi;
my $currentline;
$file_in = "svc_test_sdl.txt";
$file_test = "koroesi.txt";
open (INPUT, "$file_in") or die %!;
open (TESTFILE, "$file_test") or die %!;
@datafile = <INPUT>;
close (INPUT);
@koroesi = <TESTFILE>;
close (TESTFILE);
%koroesi = @koroesi;
{
foreach $line (@datafile){
chomp $line;
(@columns) = split (/ /,$line);
$currentline = $columns[1];
print "$currentline\n";
if (exists($koroesi{$currentline}))
{
s/$currentline/\[$currentline\]/;
}
}
}
}
Anmerkungen zu Deinem Skript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
:o( keine "warnings"
:o( warum "strict" auf 'vars' eingeschränkt
:o) (zeile 18/19) open auf misserfolg geprüft
verbesserung: 3-argument-open: open HANDLE, '<', $filename
:o( (zeile 26) %hash = @array; # boese
mit @array = ( 1,2,3,4 ) ergibt das %hash = ( 1=>2, 3=>4 );
:o( ausserdem stecken die Zeilenumbrüche noch in der Liste der Verben
:o| (zeile 37) wird nicht klappen, weil hier getestet wird,
ob das Verb ohne Umbruch als Hash-Key existiert... (s.o.)
:o( (zeile 39) s/// wird hier auf $_ angewendet, was aber nicht definiert
sein dürfte; die Zeile steckt in $line
:o| Die Maskierung der [] in der Ersetzung ist nicht notwendig
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!