« 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