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

因为它是二进制文件,所以文件中没有换行符。您可以使用 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";
于 2014-05-10T07:26:52.283 回答