在Perl中的子例程中访问全局哈希



我创建了一个全局哈希,当我尝试从perl子例程中访问哈希时,它无法访问它。

我将其声明为:

`%HASH = ();`

并尝试在子例程中访问它:

$HASH{$key} = $value;

我做错了什么?

在这里工作正常:

#!/usr/bin/env perl
use strict;
use warnings;
use feature 'say';
our %truth = (); # "global" truth: lexical name
                 # for the package variable %main::truth
sub add_to_truth {
    my ($thing, $value) = @_;
    $truth{$thing} = $value;
}
add_to_truth(answer => 42);
say $truth{answer};

输出

42

请注意,在狭窄的情况下,您必须使用其包装名称(在这种情况下为%main::truth)完全合格您的"全局"变量,或使用>我们的为其创建词汇范围的本地名称。今天没有狭窄的编程(和警告)不是一件好事™。实际上,激活它们会告诉您一些有用的东西。

相关内容

  • 没有找到相关文章

最新更新