0
while ($word = <STDIN>) {
$length = length($word) -1; # Subtract 1 for included newline char
$wordLength[$length]++;
}
print "Word length \t\t Occurrences \n\n";
for (my $i =1; $i <= $#wordLength; $i++) {
if (not exists $wordLength[$i]) {
print "$i \t\t\t 0 \n";
}
else {
print "$i \t\t\t $wordLength[$i] \n";
}
}
これはtxtファイルに素晴らしい読書を作品とのような出力:たPerl:配列の代わりにハッシュを使用すると、
Word Length Occurrence
1 27
2 104
3 1039
4 3505
5 7181
6 11765
7 15898
私は、これは、配列の代わりにハッシュを使用して動作するように取得しようとしていますが、それはdoesnのうまくいきません。これは私の試みです:
while ($word = <STDIN>) {
chomp($word);
$length = length($word);
$wordLength{$word} = "$length";
}
foreach $word (sort keys %wordLength) {
print "$word, $wordLength{$word}\n"; # print key and value
}
「$ wordLength {$ length}」を使用してください。あなたが今言葉に挑戦しているのは奇妙です。 – tadman
各長さのカウントが必要な場合は、元のコードから角括弧を変更するだけです。 '$ wordLength [$ length] ++'は '$ wordLength {$ length} ++'になります。 –
また、「動作していないようです」は有効な問題の説明ではありません。あなたのコードは実際に何をしていますか?それはあなたが期待するものとどう違うのですか? –