my %hash=();
よりmy %hash;
の方が効率的です。
どのぐらい効率的かというと:
$ perl -MO=Concise -e 'my %hash=()'
7 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v ->3
6 <2> aassign[t2] vKS ->7
- <1> ex-list lK ->4
3 <0> pushmark s ->4
- <0> stub lP ->-
- <1> ex-list lK ->6
4 <0> pushmark s ->5
5 <0> padhv[%hash:1,2] lRM*/LVINTRO ->6
$ perl -MO=Concise,-exec -e 'my %hash=()'
1 <0> enter
2 <;> nextstate(main 1 -e:1) v
3 <0> pushmark s
4 <0> pushmark s
5 <0> padhv[%hash:1,2] lRM*/LVINTRO
6 <2> aassign[t2] vKS
7 <@> leave[1 ref] vKP/REFC
$ perl -MO=Concise -e 'my %hash'
4 <@> leave[1 ref] vKP/REFC ->(end)
1 <0> enter ->2
2 <;> nextstate(main 1 -e:1) v ->3
3 <0> padhv[%hash:1,2] vM/LVINTRO ->4
$ perl -MO=Concise,-exec -e 'my %hash'
1 <0> enter
2 <;> nextstate(main 1 -e:1) v
3 <0> padhv[%hash:1,2] vM/LVINTRO
4 <@> leave[1 ref] vKP/REFC
というわけでopcodeでたった3つ分だけ効率的です。
次はid:typesterさん