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

前端之家收集整理的这篇文章主要介绍了如何在两个不同的perl脚本之间共享/导出全局变量?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们如何在两个不同的perl脚本之间共享或导出全局变量

这是情况:@H_403_3@

first.pl@H_403_3@

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

second.pl@H_403_3@

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

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

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

解决方法

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

在Perl中解决的通常方法是创建模块,然后从这些模块导入。在这种情况下:@H_403_3@

  1. #!/usr/bin/perl
  2.  
  3. package My::Module; # saved as My/Module.pm
  4. use strict;
  5. use warnings;
  6.  
  7. use Exporter;
  8. our @ISA = 'Exporter';
  9. our @EXPORT = qw(@a @b);
  10.  
  11. our (@a,@b);
  12.  
  13. @a = 1..3;
  14. @b = "a".."c";

然后使用模块:@H_403_3@

  1. #!/usr/bin/perl
  2.  
  3. use strict;
  4. use warnings;
  5.  
  6. use My::Module; # imports / declares the two variables
  7.  
  8. print @a;
  9. print @b;

那条线实际上意味着:@H_403_3@

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

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

看看Exporterperlmod的文档应该给你一个起点。@H_403_3@

猜你在找的Perl相关文章