Cth*_*har 25 variables perl global export
我们如何在两个不同的perl脚本之间共享或导出全局变量.
情况如下:
first.pl
#!/usr/bin/perl
use strict;
our (@a, @b);
.........
Run Code Online (Sandbox Code Playgroud)
second.pl
#!/usr/bin/perl
use strict;
require first.pl;
Run Code Online (Sandbox Code Playgroud)
我想使用first.pl中声明的全局变量(@a,@b)
另外,假设第二个perl文件中的变量与第一个perl文件相同.但我想使用第一个文件的变量.怎么做到这一点?
Eri*_*rom 31
通常,当您处理多个文件,并在它们之间导入变量或子例程时,您会发现随着项目的增长,需要文件会变得有点复杂.这是由于所有内容共享一个共同的命名空间,但在某些文件中声明了一些变量而在其他文件中没有.
在Perl中解决此问题的常用方法是创建模块,然后从这些模块导入.在这种情况下:
#!/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";
Run Code Online (Sandbox Code Playgroud)
然后使用该模块:
#!/usr/bin/perl
use strict;
use warnings;
use My::Module; # imports / declares the two variables
print @a;
print @b;
Run Code Online (Sandbox Code Playgroud)
那条use线实际上意味着:
BEGIN {
require "My/Module.pm";
My::Module->import();
}
Run Code Online (Sandbox Code Playgroud)
该import方法来自Exporter.调用它时,它会将@EXPORT数组中的变量导出到调用代码中.
查看Exporter和perlmod的文档应该为您提供一个起点.
yst*_*sth 18
他们将分享全局变量,是的.你看到了一些问题吗?
例:
first.pl:
#!/usr/bin/perl
use strict;
use warnings;
our (@a, @b);
@a = 1..3;
@b = "a".."c";
Run Code Online (Sandbox Code Playgroud)
second.pl:
#!/usr/bin/perl
use strict;
use warnings;
require "first.pl";
our (@a,@b);
print @a;
print @b;
Run Code Online (Sandbox Code Playgroud)
赠送:
$ perl second.pl
123abc
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40528 次 |
| 最近记录: |