PERL无法通过./echo.pl中的包“IO :: File”找到对象方法“echo”

时间:2016-02-16 22:40:48

标签: perl

我正在通过Allen B. Downey的书“学习Perl the Hard Way”来学习Perl。它指示我执行以下代码“echo.pl”:

#! /usr/bin/perl

use strict;

sub echo {
    my @params = @_;
    print "@params\n";
}

echo ARGV

测试代码返回:

$./echo.pl TEST NOW
Can't locate object method "echo" via package "IO::File" at ./echo.pl
line 10.

它应该返回:

TEST NOW

有什么问题?

3 个答案:

答案 0 :(得分:4)

echo ARGV

被Perl解释为"间接对象符号",即与

相同
ARGV->echo

ARGV  是一个特殊的文件句柄,它的方法来自IO::File - 但那里没有echo方法。

答案 1 :(得分:0)

你要找的是这个。

#!/usr/bin/perl
use warnings;
use strict;


sub echo {
     my @params = @_;
     print "@params\n";
}

echo(@ARGV);

答案 2 :(得分:0)

这本书是online here。该程序在第4页(按页码编号)。它是:

sub echo {
    print "@_\n";
}
echo @ARGV

所以这只是一个错字。您有ARGV @ARGV。{/ p>

这本书是从2003年开始的。从那以后,Perl发生了很多变化。你可能最好不要再看Modern Perl了。