2011-08-12
■ [binary]バイナリなファイルの読み書き

use IO:All するとよしなにしてくれるらしい。
my $read_file = 'read.jpg'; my $write_file = 'write.jpg'; my $buffer;
use IO::All; $buffer = io($read_file)->binary->all; # ごにょごにょ $buffer > io($write_file);
使わない場合にはこう書いてる
$buffer = _read($read_file); # ごにょごにょ _write($write_file, $buffer); sub _read { my $file = shift; open my $fh, '<', $file or die $!; binmode $fh; return do { local $/; <$fh> }; } sub _write { my($file, $bin_data) = @_; open my $fh, '>', $file or die $!; binmode $fh; print $data; close $fh; }
以前の _read 関数はこう
sub _read { my $file = shift; my $size = -s $file; my $buf; open my $fh, '<', $file or die $!; binmode $fh; read $fh, $buf, $size; $buf; }
コメントを書く
トラックバック - http://perl.g.hatena.ne.jp/ishiduca/20110812