我有一个 Perl 脚本,其中我们编写了几个子程序。例如:
# Try_1.pl
main();
sub main{
---
---
check();
}
check {
--
--}
现在,我写了另一个脚本Try_2.pl
,其中我想调用Perl脚本Try_1.pl
的检查子例程。
我有一个 Perl 脚本,其中我们编写了几个子程序。例如:
# Try_1.pl
main();
sub main{
---
---
check();
}
check {
--
--}
现在,我写了另一个脚本Try_2.pl
,其中我想调用Perl脚本Try_1.pl
的检查子例程。
听起来你想创建一个模块。尝试_1.pm (注意扩展名) 应该具有以下形式:
package Try_1;
use base 'Exporter';
our @EXPORT = qw(check);
sub check {
}
1;
然后 Try_2.pl 需要获取那段代码:
use Try_1 qw(check);
.pm
),而是使用库(扩展名为.pl
):require 'Try_1.pl';
check();
请确保Try_1.pl
和Try_2.pl
两个文件在同一个目录中。
test1.pl:
use Routines;
{
my $hello = "hello123";
hello( $hello );
# ...
}
test2.pl:
package Routines;
sub hello
{
my $hello = shift;
print "$hello\n";
}
1;
"run" 的答案经过测试可以工作,但需要像这样调用 "Try_1::check()"。否则会显示错误 "Undefined subroutine &main::check()"。
Try_1.pm
并放置在您的@INC
路径中。 - friedo@EXPORT
,因此在Try_2.pl中不需要显式导入函数check
,只需简单地使用use Try_1
即可。您可以使用@EXPORT_OK
来要求显式导入。 - Joel Berger