Использование подпрограммы из другого файла - PullRequest
1 голос
/ 02 марта 2012

Рассмотрим:

Файл display.pl

disp{
    my $p = shift;
    print $p;
}

Файл temp.pl

require "display.pl";

$item = "asd";

&disp($item);

Когда я выполнил temp.pl, он выдал ошибку:

не удается найти метод "disp" без пакета или ссылки на объект в строке display.pl 2.

Ответы [ 2 ]

10 голосов
/ 02 марта 2012

Вы забыли написать sub до disp{ в display.pl, поэтому Perl не знает, что вы пытаетесь определить функцию.

Всегда используйте strict и warnings, и вы избежите таких проблем. Кроме того, как отмечает @NEW, вам необходимо завершить display.pl 1;, поскольку require требует, чтобы файл заканчивался истинным значением.

Исправлено, ваш код будет:

use strict;
use warnings;

sub disp {
    my $p = shift;
    print $p;
}

1;
5 голосов
/ 02 марта 2012

Избегайте ошибок, используя

use strict ;
use warnings;

Примечание , что вам нужно 1; в конце файла, как

sub disp{ 
    my $p=shift;  
   print $p;
 } 
1;

Это потому, что Perl нужно, чтобы последнее выражение в файле возвращало истинное значение.

Если требуемый файл (display.pl) находится в другом каталоге, вам необходимо указать абсолютный путь:

Вам не нужно беспокоиться о рекурсивных требованиях (например, о файле, требующем текущего файла), Perl будет обрабатывать все.

СМОТРИТЕ ТАКЖЕ

perldoc -f требует и perldoc -q требует и perldoc perlmod для лучшего понимания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...