このexists
関数は、ハッシュ内のエントリを予期せず自動活性化する可能性があります。
私が驚いたのは、この動作が定数にも引き継がれることです。
use strict;
use warnings;
use Data::Dump 'dump';
use constant data => {
'foo' => {
'bar' => 'baz',
},
'a' => {
'b' => 'c',
}
};
dump data; # Pre-modified
print "No data for 'soda->cola->pop'\n" unless exists data->{soda}{cola}{pop};
dump data; # data->{soda}{cola} now sprung to life
出力
{ a => { b => "c" }, foo => { bar => "baz" } } No data for 'soda->cola->pop' { a => { b => "c" }, foo => { bar => "baz" }, soda => { cola => {} } }
これはバグだと思います。これは5.10.1固有のものですか、それとも他のバージョンのPerlも同様に動作しますか?