Perl の constant はリファレンスの中身までは定数化しない2006年12月13日 16時16分10秒

またしても超基本 (^_^; 。

use strict;
use constant TEST => { foo => 'hoge', bar => 'huga' };
use Data::Dumper;

my $test = TEST;
$test->{baz} = 'hugogo';

my $var = TEST;
print Dumper($var);

出力結果は当然以下の通り。

$VAR1 = {
          'bar' => 'huga',
          'baz' => 'hugogo',
          'foo' => 'hoge'
        };

リファレンスの中身が変更されないことを保証するには、以下のように、毎回リファレンスを生成するようにサブルーチンを定義する必要がある。

sub TEST () { return { foo => 'hoge', bar => 'huga' } }

でもこれ、インライン化はされない。毎回 (動的に) リファレンスを生成する関数、だから。

コメント

コメントをどうぞ

※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。

※投稿には管理者が設定した質問に答える必要があります。

名前:
メールアドレス:
URL:
次の質問に答えてください:
おいらがやっている会社の名前をひらがな4文字で。

コメント:

トラックバック

このエントリのトラックバックURL: http://harapeko.asablo.jp/blog/2006/12/13/1027403/tb

※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。