my $a = { hoge => 'fuga' };のように書くわけですが、とあるPerlコードを覗いていたとき、
my $a = +{ hoge => 'fuga' };のような記述を見かけたわけです。
ぱっと見て、'+'が何なのかよく解らなかったので、Twitterで聞いてみたところ、
- 明示的にハッシュリファレンスを渡している
- 単項の+はNOPなのでB::Deparseで同一になるはず
実際に確認してみました。
スクリプトは以下のように記述。
use warnings; use strict; use Data::Dumper; my $a = { hoge => 'fuga' }; my $b = +{ hoge => 'fuga' };
B::Deparseに通してみたところ。
$ perl -MO=Deparse ./hoge.pl use Data::Dumper; use warnings; use strict 'refs'; my $a = {'hoge', 'fuga'}; my $b = {'hoge', 'fuga'};
たしかに同一ですね。syntax-sugarと思ってOKそうです。
0 件のコメント:
コメントを投稿