Ich habe alles versucht, um eine Liste von Wörtern, die im Vergleich zu einer anderen Datei eindeutig zu einer Datei existieren. Ich legte etwas Debug-Druck in den Code ein, um herauszufinden, wo es hinging, und stellte fest, dass der Code in der Vergleichsschleife nie etwas tut.Vergleichen Sie zwei Listen von Wörtern und speichern Sie die Wörter, die nicht in der zweiten Liste sind in Perl
Ich denke, ich bin blind oder übersehen etwas wirklich offensichtlich - jemand bitte zeigen Sie, was falsch ist und genießen Sie lachen über meine "wahrscheinlich ein Anfänger" Fehler.
while (<IN>) { #read the file
chomp;
$_ = lc; #convert to lower case
s/ --//g; #remove double hyphen dashes
s/ -//g; #remove single hyphen dashes
s/ +/ /g; #replace multiple spaces with one space
s/[~`@#$%^&*-+=<>.,:;?"!_()\[\]]//g; #remove punctuation
@hwords = split;
# foreach $w (@hwords) { print "$w \n";}
}
while (<IN0>) { #read the file
chomp;
$_ = lc; #convert to lower case
s/ --//g; #remove double hyphen dashes
s/ -//g; #remove single hyphen dashes
s/ +/ /g; #replacxew multiple spaces with one space
s/[~`@#$%^&*-+=<>.,:;?"!_()\[\]]//g; #remove punctuation
@awords = split;
# foreach $w (@awords) {print "$w\n";}
}
$count =0;
@unique =();
print "got here!\n"; # YES - it gets here
foreach $w (@hwords) { print "$w \n";}
foreach $h (@hwords) {
$x=1;
print "got there!\n"; # NOPE, doesn't get here
foreach $a (@awords) {
if ($h eq $a) {
$x=0;
print "equals\n"; # NEVER see this
}
}
if ($x eq 1) {
++$count;
@unique = @unique, $h;
print "$count, $h\n"; # NEVER see this, either
}
}
Beachten Sie, dass der Code korrekt angezeigt werden, müssen Sie es im Editor-Fenster mit 4 Leerzeichen einrücken. Ich habe dieses für Sie bearbeitet – stevieb
Ich würde "perltidy" auch empfehlen, um Einzug konsistent zu bekommen. – Sobrique