无法在perl中使用函数内部引用打印值
为什么我不能在引用内部函数时使用引用打印值无法在perl中使用函数内部引用打印值,perl,Perl,为什么我不能在引用内部函数时使用引用打印值 sub fun { $ref = @_; print "\n Inside the function $ref->[1] \n"; } my @arr=(2,3,4); fun (\@arr); my $ref2 = \@arr; print "\n$ref2->[1]\n"; 我得到的输出是: Inside the function 3 错误的是你的作业: $ref = @_; 因为在标量上下文中,数组返回其大小,
sub fun {
$ref = @_;
print "\n Inside the function $ref->[1] \n";
}
my @arr=(2,3,4);
fun (\@arr);
my $ref2 = \@arr;
print "\n$ref2->[1]\n";
我得到的输出是:
Inside the function
3
错误的是你的作业:
$ref = @_;
因为在标量上下文中,数组返回其大小,而不是其元素。当左侧有标量值时,将强制使用标量上下文。你应该做:
my ($ref) = @_;
或
您还需要将$ref->[1]
更改为$ref->[0]
,否则您将引用错误的元素。Perl数组从索引0开始
你应该做的是使用
use strict;
use warnings;
这会给您带来错误:
Can't use string ("1") as an ARRAY ref while "strict refs" in use at line ...
这就是发生的事情。将大小1
指定给$ref
,然后尝试将其用作数组ref:$ref->[1]
Can't use string ("1") as an ARRAY ref while "strict refs" in use at line ...