私は、別のファイルと比較して1つのファイルに一意に存在する単語のリストを作るためにすべてを試しました。コードにデバッグ印刷を入れて、どこに行こうとしているかを調べ、コードが比較ループで何もしないことを発見しました。単語の2つのリストを比較して、perlの2番目のリストにない単語を保存します
私は盲目的であるか、または何かが本当に明白であることを見落としています。誰かが何が間違っているのかを指摘し、私の「おそらく初心者」のエラーを笑って楽しんでください。
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
}
}
注意。私はあなたのためにこれを編集しました – stevieb
インデントの一貫性を得るために、 'perltidy'もお勧めします。 – Sobrique