我有一个关于通过引用 Perl 中的子例程传递的问题。对于值,如果我使用 @_ 它可以工作,但对于 ref 只有 shift 工作。不知道为什么。我在下面给出了示例代码:
这有效:
#! /usr/bin/perl
use strict;
use warnings;
my $name = 'John';
PassScalarByRef( \$name );
sub PassScalarByRef{
my $got = shift;
print "Hello $$got\n";
}
但不是这个:
#! /usr/bin/perl
use strict;
use warnings;
my $name = 'John';
PassScalarByRef( \$name );
sub PassScalarByRef{
my $got = @_;
print "Hello $$got\n";
}