2014-05-10 4 views
0

perl에서 pgm 파일을 읽는 데 문제가 있습니다. 누구든지이 작업을 수행하는 방법을 알고 있습니까?Perl 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); 
+0

https://metacpan.org/pod/Image::PBMlib –

답변

0

당신이에 줄 바꿈이없는 바이너리이기 때문에 : 이, 난 단지 PGM 파일의 헤더 부분을 읽어 내 코드를 시도했습니다되어

(PGM 파일은 바이너리 버전이 아닌 ASCII입니다) 파일. 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"; 
검사 할 수 있습니다