高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

長い長い戦い

おんぷ村用のPerlのコードに苦戦すること2時間ちょっと。ようやく何とか動くところまで持って行けました・・・。後で振り返るとたいしたことない処理なのに、何でこんなに詰まってしまったのか・・・。
まあ、早い話が以下のような感じ。

my(@var1, %var2, $var3);
@var1 = (1, 2, 3);
$var2{array} = \@var1;
$var3 = \%var2;
foreach my $item($var3->{array}) # この行でエラー
{
  ...処理...
}

foreachの括弧の中にはリスト型を渡してあげなければいけないのに、上ではリストのリファレンスしか渡してなかったのでずっとエラーになっていたという話(@{$var3->{array}}と外を波括弧で囲めば、値がデリファレンスされてちゃんとリスト型になるので、問題なく動作する)。
これ、単純にエラー出力される訳じゃなくて、Perlインタプリタ自体が落ちてしまうんですね、このこともエラーの発見が遅れた原因・・・というのはただのいいわけですが。
――ちょっとPerlから離れていたせいもあるかもしれませんが、またやってしまった。この手の問題は何度かやったことがあるのに、問題に気づかず2時間も時間を無駄にしてしまったとは・・・。
情けない・・・(/_;)


こういうのはどうすればいいんでしょうか。とりあえずどこかいつも見える場所に置いておく(Windowsガジェットに張り出しておくとか?)などという方法も考えられますが、なんか根本的な解決にはなっていない気がする。第一それではほかのPCを使ってるときに同じ過ちを起こすかもしれないし。
なんというか、そもそもこういう間違いを犯さないようなコーディングに持って行くことが大事なんでしょうか。ミスを犯さないように気をつけるのも大事ですが、そもそもミスが起こりそうな道を避けるという方法も検討しないと、素早く正確なコーディングはできないんでしょうか。
うーん、まだまだ道は長そうです。