グローバル ハッシュを作成しましたが、Perl サブルーチン内からそのハッシュにアクセスしようとすると、アクセスできません。
私はそれを次のように宣言しました:
`%HASH = ();`
サブルーチンで次のようにアクセスしようとしています:
$HASH{$key} = $value;
私は何か間違ったことをしていますか?
グローバル ハッシュを作成しましたが、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
場合) で完全修飾するか、 . そして今日、制限 (および警告) なしでプログラミングすることは良いことではありません™. 実際、それらをアクティブにすると、何か役立つことがわかりました。