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