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

Acs*_*sor -1 perl global-variables strict

我想知道在使用严格的pragma时是否可以使用一些全局变量.

例如,我试过这样做:

#!/usr/bin/perl -w

use strict;

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

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

print_global;
Run Code Online (Sandbox Code Playgroud)

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

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

amo*_*mon 6

在使用它之前声明全局:

our $global;
Run Code Online (Sandbox Code Playgroud)

与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;
Run Code Online (Sandbox Code Playgroud)