将数组和变量传递给Perl中的函数

时间:2014-08-22 21:29:12

标签: perl

我将数组和变量传递给函数时遇到了问题。例如,我有以下内容。

 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

1 个答案:

答案 0 :(得分:5)

以下分配会将参数列表@_中的所有值都放入@array_ref

my (@array_ref, $ran_variable) = @_;

您有两种选择。

  1. 重新排序参数的传递,以便数组在最后:

    my @the_array = ( "hello", "hey" );
    CallFunction( "random", @the_array );
    
    sub CallFunction {
        my ( $ran_variable, @array ) = @_;
    
        for my $element (@array) {
            print $element . "\n";
        }
    }
    
  2. 或者通过引用传递数组:

    my @the_array = ( "hello", "hey" );
    CallFunction( \@the_array, "random" );
    
    sub CallFunction {
        my ( $arrayref, $ran_variable ) = @_;
    
        for my $element (@$arrayref) {
            print $element . "\n";
        }
    }
    
  3. 次要注意 - 命名正常数组@array_ref有点令人困惑。保存实际持有引用的变量的ref后缀。