2004年03月17日(水)の日記
Perl リファレンス 備忘録
今日はPerlに関して様々な発見が。
Perl 5からは変数へのリファレンスという機能が追加されていたらしい。C系のプログラマーにはポインタといった方がわかりやすいわけですが。
この機能を待っていました(今日まで気付いてなかっただけですが)。これでハッシュ(連想配列)の配列を作れるわけで。
というわけで、早速この"ひあるび日記"のindex.cgiをプログラムし直したら、ファイルサイズが半分以下に。
ただ、ハッシュの配列を作るに当たって戸惑ったのは、Perlで変数の解放がわからなかったこと。
たとえば、
なんてことをすると、@arrayがすべて同じ変数へのポインタ(リファレンス)を保持することになるわけで、
しかたなく
として、myで変数宣言し直すと、意図した通りの動作をしてくれるんですが、こんなんでいいんでしょうか?
そんなことを疑問に思った日。
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で変数宣言し直すと、意図した通りの動作をしてくれるんですが、こんなんでいいんでしょうか?
そんなことを疑問に思った日。
この日記へのトラックバック
配列または連想配列(ハッシュ)の配列ひあるびWeblog 配列または連想配列(ハッシュ)の配列の作り方
この日記へのコメント