F450

2004年03月17日の日記 ‣ Perl リファレンス 備忘録

古いデータが多く含まれているため、デッドリンクがあったり記事等を正しく表示できなかったりする可能性があります。また、これらの日記に対する新たなコメントやトラックバックは受け付けていません。予めご了承下さい。
2004年03月17日(水)の日記

Perl リファレンス 備忘録

今日はPerlに関して様々な発見が。
Perl 5からは変数へのリファレンスという機能が追加されていたらしい。C系のプログラマーにはポインタといった方がわかりやすいわけですが。
この機能を待っていました(今日まで気付いてなかっただけですが)。これでハッシュ(連想配列)の配列を作れるわけで。
というわけで、早速この"ひあるび日記"のindex.cgiをプログラムし直したら、ファイルサイズが半分以下に。

ただ、ハッシュの配列を作るに当たって戸惑ったのは、Perlで変数の解放がわからなかったこと。
たとえば、

for ($i = 0;$i < 10;$i++) {
%hash = ($keys[$i] = > $values[$i], $otherkeys[$i] => $othervalues[$i]);
$array[$i] = \%hash;
}

なんてことをすると、@arrayがすべて同じ変数へのポインタ(リファレンス)を保持することになるわけで、
しかたなく

for ($i = 0;$i < 10;$i++) {
my %hash;
%hash = ($keys[$i] => $values[$i], $otherkeys[$i] => $othervalues[$i]);
$array[$i] = \%hash;
}

として、myで変数宣言し直すと、意図した通りの動作をしてくれるんですが、こんなんでいいんでしょうか?

そんなことを疑問に思った日。
[不明]

この日記へのコメント

この日記へのコメントはありません。

この日記へのトラックバック