我正在阅读一本书,并通过一些例子做了以下内容,以便回答练习。我可能搞砸了一些东西,但对我来说看起来还不错。我得到错误:在x3.pl第31行非法声明子程序main :: read_file。我不确定这里有什么问题,并希望得到帮助。作者希望使用croak,所以如果搞砸了,请将其包含在解决方案中。
use strict;
use warnings;
sub croak { die "$0: @_: $!\n" }
sub read_file {
my $file = shift;
open (FILE, $file) || croak "Couldn't open $file";
while (my $line = <FILE>) {
read_line $line;
}
}
sub read_line {
our %hash;
my @list = split " ", shift;
foreach my $word (@list) {
$hash{$word}++;
}
}
sub print_has {
our %hash;
my @list = keys %hash;
print "@list\n";
}
sub read_file @ARGV
sub print_has
答案 0 :(得分:3)
这是错误的:
sub read_file @ARGV
sub print_has
我认为你试图打电话给潜水艇?子程序调用不使用sub
关键字。
read_file @ARGV;
print_has;
代码中存在许多不良做法,其中一种做法会阻止代码运行。您应该将其置于code review。