Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Perl中使用导出器的多个包大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在努力熟悉Perl导出器,我面临的问题是我尝试的任何东西我都不能使用导出器和包含多个包的模块.我在下面想念的是什么? @H_355_2@mymodule.pm use Strict; use warnings; package Multipackage1; use Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(test1); sub test1 { print "First package\n"; } 1; package Multipackage2; use Exporter; our @ISA = qw(Exporter); our @EXPORT = qw(test2); sub test2 { print "Second package\n"; } 1; package Multipackage3; use Exporter; our @ISA = qw(Exporter); our @EXPORT_OK = qw(test3); sub test3 { print "Third package\n"; } 1; MymainFile.pl #!/usr/bin/perl use Strict; use warnings; use Multipackage; use Multipackage qw(test3); print "Calling first package:\n"; test1(); print "Calling second package:\n"; test2(); print "Calling third package:\n"; test3();

我得到test1不是主包的一部分.

提前致谢.

解决方法

use调用 require,它查找包名称的文件(使用/ for ::和.pm).

因此,需要使用包来代替实际文件,然后从包中请求import.

@H_405_4@main.pl

use warnings;
use Strict;

require Mymodule;

import Multipackage1;
import Multipackage2;
import Multipackage3 qw(test3);

print "Calling first package:\n";
test1();
print "Calling second package:\n";
test2();
print "Calling third package:\n";
test3();

在Mymodule.pm中,将每个包放在它自己的块中以提供词法变量的范围,因为package不这样做,或者使用包Pack {…} since v5.14.不需要所有那些1,而你可以拉使用出口商;走出街区.

产量

Calling first package:
First package
Calling second package:
Second package
Calling third package:
Third package

更好的是,取代我们的@ISA = qw(出口商);使用Exporter qw(import);对于

use Strict;
use warnings;

package Multipackage1 {
    use Exporter qw(import);
    our @EXPORT = qw(test1);

    sub test1 { print "First package\n" }
}
...
1;

有相同的输出.

请注意,通常不需要将多个包放在一个文件中.

大佬总结

以上是大佬教程为你收集整理的在Perl中使用导出器的多个包全部内容,希望文章能够帮你解决在Perl中使用导出器的多个包所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。