対処療法

なぜ対処療法かというと、おいらが中身を全然理解してないから...orz

Hashを引数にとろうとするとなぜかOdd number of elements in hash assignmentなんて
警告が...

とりあえずぐぐる

Odd number of elements in hash list (S) ハッシュリストへの要素の数が奇数でした。 ハッシュリ ストは、key/value のペアで与えられますから、これは奇妙なことです。


奇妙ってなぁ...わけわかめ

もうちょっとぐぐる

Performanceとか、タイプ数が増えることより、このコードの弱点は間違ってハッシュ以外のものを渡したときの対策がないこと。Odd number of elements in hash assignmentという警告は出ますし、規約重要ということにしておけばよい話ですが、慎重を期すなら

sub foo{
die "foo needs hash" if @_ % 2;

my %arg = (
optional => 42,
@_, # ここがポイント
);
}

のような対策を入れておきたいところですな。


だめもとで、上ののコードを加えてみる。ちょうどここ。

die "foo needs hash" if @_ % 2;

...警告が消えた。

ん...納得がいかない。

わかったこと。

  • そもそも、リファレンスとかがまずわかっていない
  • strictとwarningの意味をよくわかっていない*1
  • っていうか、まずPerlのふつうの文法の本を持っていない

ラクダ本買えって? w

*1:これはPerlプログラミング救命病棟のどっかの章に書いてあるというところだけは確認してる...実はカバンに入ってて毎日持ち運んでいたりするのだが...