ルモーリン

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

投稿:2018-04-15

一時ファイルへ書き出せば良いかと思ったがこの手の挑戦サイトでは恐らく認められない。 そこでファイルを作らずに変数に書き出そう。
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関数で良かったんじゃ?