2017-01-04 3 views
0

Perl (5.16) 및 ImageMagick (6.8.8)을 사용하고 있습니다. 새 ImageMagick 객체를 참조로 서브 루틴에 보내고 거기에서 객체를 수정하고 싶습니다. 그러나 "unblessed reference"에서 "메소드를 호출 할 수 없습니다"라는 메시지가 나타납니다. 분명히, 나는 서브 루틴에서 객체를 적절하게 다루지 않을 것이다. 누구든지 도와 줄 수 있습니까? 감사.Perl : 서브 루틴에서 ImageMagick 객체 수정

my $im=Image::Magick->new; 
ModifyImage(\$im,$f); 

sub ModifyImage { 
    my $im=shift; 
    my $file=shift; 
    my $res = $im->Read($file); 
    warn $res if $res; 
} 

답변

2

귀하의 Image::Magick 객체 $im 이미 데이터에 대한 참조를 보유하고 있습니다. 당신은 변수에 대한 참조를 취할 필요가 없습니다, 당신의 전화는

ModifyImage($im, $f); 

과 같아야합니다 그리고 더 간결하게하고, 확인이

sub ModifyImage { 
    my ($im, $file) = @_; 

    my $res = $im->Read($file) 
    warn $res if $res; 
} 

같은 서브 루틴을 작성합니다 $im$file이 매개 변수임을 분명히합니다.

+0

아, 맞아. 고마워, 지금 일하고있어. – MrSparkly