为什么我的内部功能无法使用引用打印值?
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";
Run Code Online (Sandbox Code Playgroud)
我得到的输出是:
Inside the function
3
Run Code Online (Sandbox Code Playgroud)
你的任务是错的:
$ref = @_;
Run Code Online (Sandbox Code Playgroud)
因为在标量上下文中,数组返回其大小,而不是其元素.当您在左侧有标量值时,会施加标量上下文.你应该做:
my ($ref) = @_;
Run Code Online (Sandbox Code Playgroud)
要么
my $ref = shift; # shifts first argument from @_
Run Code Online (Sandbox Code Playgroud)
您还需要更改$ref->[1]为$ref->[0],否则您将引用错误的元素.Perl数组从索引0开始.
你应该做的就是使用
use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)
哪会给你错误:
Can't use string ("1") as an ARRAY ref while "strict refs" in use at line ...
Run Code Online (Sandbox Code Playgroud)
这是怎么回事.您将大小分配1给$ref,然后尝试将其用作数组ref:$ref->[1]