Perl读取PGM文件

时间:2014-05-10 07:01:59

标签: perl binary pgm

我甚至无法在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);

1 个答案:

答案 0 :(得分:0)

因为它是二进制文件,所以文件中没有换行符。 您可以使用slurp模式一次读取整个文件。 查看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";