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: http://harapeko.asablo.jp/blog/2006/12/13/1027403/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※投稿には管理者が設定した質問に答える必要があります。