我们如何在两个不同的perl脚本之间共享或导出全局变量。
这是情况:@H_403_3@
first.pl@H_403_3@
- #!/usr/bin/perl
- use strict;
- our (@a,@b);
- .........
second.pl@H_403_3@
- #!/usr/bin/perl
- use strict;
- require first.pl;
我想使用在first.pl中声明的全局变量(@a,@b)@H_403_3@
另外,假设在第二个perl文件中有一个与第一个perl文件相同的变量。但是我想使用第一个文件的变量。如何实现这一点?@H_403_3@
解决方法
一般来说,当您使用多个文件,并在它们之间导入变量或子例程时,您将发现,要求文件最终会随着项目的增长而变得复杂。这是因为共享一个通用命名空间的所有东西,但是在一些文件中声明了一些变量,而不是其他变量。
在Perl中解决的通常方法是创建模块,然后从这些模块导入。在这种情况下:@H_403_3@
- #!/usr/bin/perl
- package My::Module; # saved as My/Module.pm
- use strict;
- use warnings;
- use Exporter;
- our @ISA = 'Exporter';
- our @EXPORT = qw(@a @b);
- our (@a,@b);
- @a = 1..3;
- @b = "a".."c";
然后使用模块:@H_403_3@
- #!/usr/bin/perl
- use strict;
- use warnings;
- use My::Module; # imports / declares the two variables
- print @a;
- print @b;
那条线实际上意味着:@H_403_3@
- BEGIN {
- require "My/Module.pm";
- My::Module->import();
- }