2016-02-16 3 views
-1

Я изучаю Perl, следуя книге «Изучение Перла на жестком пути» Аллена Б. Дауни. Он поручает мне выполнить следующий код "echo.pl":PERL Не удается найти метод объекта «эхо» через пакет «IO :: File» в ./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 

Что не так?

+2

Попробуйте 'echo @ARGV;' – amphetamachine

ответ

4
echo ARGV 

интерпретируются Perl как «косвенный объект запись», то есть такие же, как

ARGV->echo 

ARGV это специальный дескриптор файла, его методы приходят форму IO::File - но нет echo метода там.

0

То, что вы ищете, должно быть именно этим.

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


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

echo(@ARGV); 
0

Книга online here. Эта программа находится на стр. 4 (идет по номерам страниц). Это:

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

Так что это только опечатка. У вас есть ARGV, где вы хотели @ARGV.

Эта книга с 2003 года. С тех пор многое изменилось в Perl. Возможно, вам лучше будет выглядеть Modern Perl.

Смежные вопросы