ルモーリン
ホーム更新連絡先

変数にファイルを出力して省メモリ

きっかけ

こんな省メモリ策を考えてみた

一時ファイルへ書き出せば良いかと思ったがこの手の挑戦サイトでは恐らく認められない。 そこでファイルを作らずに変数に書き出そう。

コード

my $map;
open my $map_fh, "+>", \$map;

# 書き込み
my $data = 12345;
put_array(123, $data);

# 読み出し
$data = get_array(123, $data);

close $map_fh;

exit;

my $s;
sub get_array {
	seek $map_fh, 4 * $_[0], 0;
	read $map_fh, $s, 4;
	return unpack "l", $s;
}

sub put_array {
	seek $map_fh, 4 * $_[0], 0;
	print $map_fh pack "l", $_[1];
}

まとめ

このページを書いている間に気付いたのですが、ファイルの代わりにsubstr関数で良かったんじゃ?