【发布时间】:2013-09-17 01:53:45
【问题描述】:
不完全确定为什么,但由于某种原因,我无法在 while 循环之外打印哈希值。
#!/usr/bin/perl -w
opendir(D, "cwd" );
my @files = readdir(D);
closedir(D);
foreach $file (@files)
{
open F, $file or die "$0: Can't open $file : $!\n";
while ($line = <F>) {
chomp($line);
$line=~ s/[-':!?,;".()]//g;
$line=~ s/^[a-z]/\U/g;
@words = split(/\s/, $line);
foreach $word (@words) {
$frequency{$word}++;
$counter++;
}
}
close(F);
print "$file\n";
print "$ARGV[0]\n";
print "$frequency{$ARGV[0]}\n";
print "$counter\n";
}
任何帮助将不胜感激! 干杯。
【问题讨论】:
-
如何调用脚本?
perl the-script.pl someWord?$ARGV[0]要求输入第一个命令行参数。除此之外,您可能希望将该脚本重写为use strict等。它也应该很快死掉,当它想将父目录..作为文件打开时。您需要检查该文件是否为普通文件,例如next unless -f $file. -
总是:
use strict; use warnings;。在循环外声明%frequency。 -
@M42
%frequency没有声明为词法,而且他没有使用严格,所以这不是问题。
标签: perl hash initialization