首页>Program>source

我们如何在两个不同的perl脚本之间共享或导出全局变量.

这里是情况:

first.pl

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

second.pl

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

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

此外,假设第二个perl文件中有一个变量与第一个perl文件相同.但是我想使用第一个文件的变量.如何实现这一目标?

最新回答
  • 2天前
    1 #

    通常,当您使用多个文件并在它们之间导入变量或子例程时,您会发现,随着项目的增长,所需文件最终会变得有些复杂.这是由于所有内容共享一个公共的名称空间,但是某些变量在某些文件中声明,而其他文件中没有声明。

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

    那个 use 行实际上意味着:

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

    维兹威兹 方法来自 import .调用时,它将在 Exporter中导出变量 数组放入调用代码中。

    查看Exporter和perlmod的文档应该为您提供一个起点。

  • 2天前
    2 #

    它们将共享全局变量,是的.您是否对此有疑问?

    示例:

    first.pl:

    @EXPORT
    

    second.pl:

    #!/usr/bin/perl
    use strict;
    use warnings;
    our (@a, @b);
    @a = 1..3;
    @b = "a".."c";
    

    给予:

    #!/usr/bin/perl
    use strict;
    use warnings;
    require "first.pl";
    our (@a,@b);
    print @a;
    print @b;
    

  • 2天前
    3 #

    不能使用包并导出变量吗?

    $ perl second.pl 123abc

相关问题

  • C和C ++中的嵌套结构
  • javascript:使用CSS和HTML5使用梯形创建导航按钮