1

グローバル ハッシュを作成しましたが、Perl サブルーチン内からそのハッシュにアクセスしようとすると、アクセスできません。

私はそれを次のように宣言しました:

`%HASH = ();`

サブルーチンで次のようにアクセスしようとしています:

$HASH{$key} = $value;

私は何か間違ったことをしていますか?

4

1 に答える 1

8

ここでうまく動作します:

#!/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場合) で完全修飾するか . そして今日、制限 (および警告) なしでプログラミングすることは良いことではありません™. 実際、それらをアクティブにすると、何か役立つことがわかりました。

于 2012-10-25T20:39:25.987 に答える