Sep 03, 2013

Perl で cat.pl

UNIX/Linux のコマンドに cat というのがあって、ぽちは主にテキストファイルの中身を表示させたり、バイナリファイルを結合するのに使っています。先日、Windows上でバイナリファイルを結合しなければならなくなり、Unixコマンドの cat相当のものを Perl でざっと書いてみました。

cat.pl

#!/usr/bin/env perl

use strict;
use warnings;

binmode STDOUT;

while ( <@ARGV> ) {
    open my $fh, '<', $_ or die "Couldn't open $_: $!";
    binmode $fh;
    print while <$fh>;
    close $fh;
}

コードを見ての通りですけども、こんな感じで使います。

C¥> perl cat.pl file1 file2 file3 > catenated_file

Windows上でバイナリファイルを扱わなきゃいけないので、ファイルハンドルを通しての遣り取りでは binmode を使っています。

と、ここまでは良かったのですけども、これを書いた直後に Windows のコマンドの copy で、

C¥> copy /b file1+file2+file3 catenated_file

とバイナリファイルの結合が出来る事が発覚して、全部無意味になってしまいました……。

Posted at 19:55 in perl | Comments/Trackbacks ()
Comments/Trackbacks
TrackBack ping me at
http://pochi.usamimi.info/blog/perl/cat.
Post a comment

writeback message: