Perlでバイナリファイルをいじる場合にいろいろと同じ問題に遭遇するので、忘れないようにメモ。 バイナリファイルの読み込み 読み込む場合に”getc”使うと、ファイルが終わってないのに終了してしまうことがある。 正しくは”read”を使う。 my $filename = $ARGV[0]; open my $file,'<',$filename or die; binmode $file; my $val; while(read($file, $val, 1)){ } これで1byteづつ処理できる。実際はバイナリの構造にあわせてreadするバイト数を変える。 読んだバイナリの処理 バイナリを数値として処理するためには、その構造にあわせてunpackする。 unpack("C",$val); #unsigned byte unpack("S",$val); #unsigned short