Perl:在子例程中修改 ImageMagick 对象

Perl: modify an ImageMagick object in a subroutine

我正在使用 Perl (5.16) 和 ImageMagick (6.8.8)。我想通过引用将一个新的 ImageMagick 对象发送到一个子例程并在那里修改该对象,但是我得到 "Can't call method "Read" on unblessed reference"。显然,我没有在子例程中正确处理对象。谁能帮忙?谢谢

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;
}

您的 Image::Magick 对象 $im 已经包含对数据的引用。你不需要引用变量,你的调用应该看起来像

ModifyImage($im, $f);

我会这样写子程序

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

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

为了更简洁,明确$im$file是参数。