使用另一个文件的子程序

时间:2012-03-02 11:18:23

标签: perl

考虑:

档案display.pl

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

档案temp.pl

require "display.pl";

$item = "asd";

&disp($item);

当我执行temp.pl时,它出错:

  

在display.pl第2行没有包或对象引用时找不到方法“disp”。

2 个答案:

答案 0 :(得分:10)

您忘记在sub disp{之前写display.pl,因此Perl不知道您正在尝试定义函数。

始终使用strictwarnings,您将避免此类问题。此外,正如@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 ,以便更好地理解。