考虑:
display.pl
disp{
my $p = shift;
print $p;
}
temp.pl
require "display.pl";
$item = "asd";
&disp($item);
当我执行temp.pl
时,它出错:
在display.pl第2行没有包或对象引用时找不到方法“disp”。
答案 0 :(得分:10)
您忘记在sub
disp{
之前写display.pl
,因此Perl不知道您正在尝试定义函数。
始终使用strict
和warnings
,您将避免此类问题。此外,正如@NEW所述,您需要使用display.pl
结束1;
,因为require
要求文件以真值结束。
更正了,您的代码将是:
use strict;
use warnings;
sub disp {
my $p = shift;
print $p;
}
1;
答案 1 :(得分:5)
使用
避免错误use strict ;
use warnings;
注意您需要1;在文件的末尾,如
sub disp{
my $p=shift;
print $p;
}
1;
这是因为Perl需要文件中的最后一个表达式来返回一个真值。
如果require文件(display.pl)在另一个目录中,则需要指定绝对路径:
您不必担心递归需求(例如需要一个需要当前文件的文件),Perl将处理所有事情。
另见
perldoc -f require 和 perldoc -q require 和 perldoc perlmod ,以便更好地理解。