0

perl で pgm ファイルを読み取ることさえできません。誰もこれを行う方法を知っていますか? (pgmファイルはASCIIではなくバイナリ版です)

これは私のコードです.pgmファイルのヘッダー部分のみを読み取ろうとしていました:

#!/usr/bin/perl

open(TEST, "baboon.pgm") or die "can't open \n";

binmode(TEST);

while(<TEST>){
    if($counter<=7){
        chomp;
        print "$_ ";
        $counter++;
    }
    else{
        exit 0;
    }   
}

close(TEST);
4

1 に答える 1

0

バイナリなので、ファイルに改行はありません。丸呑みモードを使用して、ファイル全体を一度に読み取ることができます。pgm の仕様を見ると、ヘッダー値は空白で区切られており、スペース、改行、タブを含めることができます。正規表現を使用して解析する際に問題がありましたが、問題なく動作しているようです。

この例から始める必要があります..

#!/usr/bin/perl

open(TEST, "baboon.pgm") or die "can't open \n";
binmode(TEST);
$/ = undef;  # Slurp mode!
my $data = <TEST>;
close(TEST);

$data =~ /(..)\s([\d]+)\s([\d]+)\s([\d]+)/; 
print "magic is $1\n";
print "width is $2\n";
print "heigh is $3\n";
print "maxval is $4\n";
于 2014-05-10T07:26:52.283 に答える