在Perl中使用具有严格编译指示的全局变量

时间:2013-07-10 10:56:41

标签: perl global-variables strict

我想知道在使用严格编译指示时是否可以使用一些全局变量。

例如,我试过这样做:

#!/usr/bin/perl -w

use strict;

sub print_global{
     print "your global is: $global\n";
}

$global = 1234;     #or even my $global = 1234;

print_global;

但是你可以注意到它不起作用。

使用strict pragma时有没有办法定义全局变量? (当然,如果有的话)

3 个答案:

答案 0 :(得分:6)

在使用之前声明全局:

our $global;

my不同,这不会创建新变量,而是使变量在此范围内可用。所以你可以安全地拥有像

这样的代码
sub print_global{
     our $global;  # does not create a new variable like `my` would
     print "your global is: $global\n";
}

our $global = 1234;

print_global;

答案 1 :(得分:1)

在您的函数上方声明my $global;,它将与use strict;一起使用。

答案 2 :(得分:1)

use strict;告诉Perl您希望被迫声明您的变量,但您没有这样做。在适当的地方添加声明。

#!/usr/bin/perl -w

use strict;

my $global;     # <----

sub print_global{
     print "your global is: $global\n";
}

$global = 1234;
print_global;