我将数组和变量传递给函数时遇到了问题。例如,我有以下内容。
my @the_array = ("hello", "hey");
CallFunction(@the_array, "random")
sub CallFunction{
my (@array_ref, $ran_variable) = @_;
foreach $element (@array_ref){
print $element ."\n";
}
}
我想要以下输出
hello
hey
但是我在输出中得到了另一个变量,我不知道为什么。
hello
hey
random
答案 0 :(得分:5)
以下分配会将参数列表@_
中的所有值都放入@array_ref
:
my (@array_ref, $ran_variable) = @_;
您有两种选择。
重新排序参数的传递,以便数组在最后:
my @the_array = ( "hello", "hey" );
CallFunction( "random", @the_array );
sub CallFunction {
my ( $ran_variable, @array ) = @_;
for my $element (@array) {
print $element . "\n";
}
}
或者通过引用传递数组:
my @the_array = ( "hello", "hey" );
CallFunction( \@the_array, "random" );
sub CallFunction {
my ( $arrayref, $ran_variable ) = @_;
for my $element (@$arrayref) {
print $element . "\n";
}
}
次要注意 - 命名正常数组@array_ref
有点令人困惑。保存实际持有引用的变量的ref
后缀。