Sun*_*nil 1 arrays perl reference subroutine
我试图修改传递给子程序的数组.
我传递一个数组引用到子例程并分配新的值,但它没有反映在调用方.
以下是我的计划.
sub receiveArray {
my $arrayref = @_;
@{$arrayref} = ( 4, 5, 6 );
}
@ar = ( 1, 2, 3 );
print "Values of the function before calling the function\n";
foreach my $var ( @ar ) {
print $var;
print "\n";
}
receiveArray(\@ar);
print "Values of the function after calling the function\n";
foreach my $var ( @ar ) {
print $var;
print "\n";
}
Run Code Online (Sandbox Code Playgroud)
上面的代码有什么问题?
mel*_*ene 10
您应该启动您编写的每个Perl文件use strict; use warnings;.这将帮助您避免这样的错误.
问题出在这一行:
my $arrayref = @_;
Run Code Online (Sandbox Code Playgroud)
您将数组分配给标量,因此在标量上下文中计算数组,从而生成数组中的元素数.
你应该做的是:
my ($arrayref) = @_;
Run Code Online (Sandbox Code Playgroud)
现在它使用列表赋值,将第一个函数参数放入$arrayref(并忽略其余的,如果有的话).
列表分配记录在perldoc perldata(以" 列表可能分配给 ......" 开头的部分).
| 归档时间: |
|
| 查看次数: |
1123 次 |
| 最近记录: |