非法声明子程序,perl

时间:2016-06-05 23:17:30

标签: perl file readline

我正在阅读一本书,并通过一些例子做了以下内容,以便回答练习。我可能搞砸了一些东西,但对我来说看起来还不错。我得到错误:在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

1 个答案:

答案 0 :(得分:3)

这是错误的:

sub read_file @ARGV
sub print_has

我认为你试图打电话给潜水艇?子程序调用不使用sub关键字。

read_file @ARGV;
print_has;

代码中存在许多不良做法,其中一种做法会阻止代码运行。您应该将其置于code review