无法在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 ...