加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在两个不同的perl脚本之间共享/导出全局变量?

发布时间:2020-12-15 21:18:51 所属栏目:大数据 来源:网络整理
导读:我们如何在两个不同的perl脚本之间共享或导出全局变量。 这是情况: first.pl #!/usr/bin/perluse strict;our (@a,@b);......... second.pl #!/usr/bin/perluse strict;require first.pl; 我想使用在first.pl中声明的全局变量(@a,@b) 另外,假设在第二个per
我们如何在两个不同的perl脚本之间共享或导出全局变量。

这是情况:

first.pl

#!/usr/bin/perl
use strict;
our (@a,@b);
.........

second.pl

#!/usr/bin/perl
use strict;
require first.pl;

我想使用在first.pl中声明的全局变量(@a,@b)

另外,假设在第二个perl文件中有一个与第一个perl文件相同的变量。但是我想使用第一个文件的变量。如何实现这一点?

解决方法

一般来说,当您使用多个文件,并在它们之间导入变量或子例程时,您将发现,要求文件最终会随着项目的增长而变得复杂。这是因为共享一个通用命名空间的所有东西,但是在一些文件中声明了一些变量,而不是其他变量。

在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";

然后使用模块:

#!/usr/bin/perl

use strict;
use warnings;

use My::Module;  # imports / declares the two variables

print @a;
print @b;

那条线实际上意味着:

BEGIN {
    require "My/Module.pm";
    My::Module->import();
}

进口方式来自出口商。当它被调用时,它会将@EXPORT数组中的变量导出到调用代码中。

看看Exporter和perlmod的文档应该给你一个起点。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读