« RSS Reader が無いと不便だ | メイン | RanRan は寒かったので中止 »
2004年11月22日
最近よくやるミスなど
最近のミスをまとめてみた。
my ($d1, $d2, $d3)
最後のセミコロンを忘れてしまう。さくさくと書いているときに限って忘れてる。
$hash{'name'}
と
$hash->{'name'}
は、同値でないことを知った。配列に入れてみたときに気がついた。
Label: foreach ( ... ) { ... if ( ... ) { last Label; } }
繰り返し制御には、ラベルをつけることができる。ラベルをつけることによって、複雑な繰り返し制御が可能になる。とはいっても、大概の場合は、つけなくても期待通りの動きをするわけですがね。メッセンジャーエージェントを作っているとき知った。
my $i = 0; Label: while ( ... ) { $i++; ... if ($i == 10) { last Label; } }
こんなことしなくても、
my $i = 0; Label: while ($i < 10 && ... ) { $i++; ... }
ってすればいいことに気がついた。いったって当たり前なのだが。
うーむ。ここ数日、使い慣れているはずの Perl から学ぶことは大きい。とはいっても、ノウハウを構築しているだけか。他にもあるので、そのうち公開するかな。間違いが含まれているような気がしないでも無いので、指摘や改良案は歓迎。
2004年11月22日 22:28 | Programming
トラックバック
コメント
if(略) last;
で何で動かないんだろうと1ヶ月悩んだことがあります。
if(略){last;}
Cと違って1文でも括弧が必要です。
ラベルがあるなんて知らなかった・・・
投稿者 Hotspring : 2004年11月22日 23:32
>> Hotspring さん
逆にして書けば大丈夫のような気がします。試してないけどw
last if ... ;
( ... = 条件式)
投稿者 ceekz : 2004年11月23日 01:19