効率的な変数宣言

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さん