2011-04-08 60 views
6

我有这样的代码,工程可以在不首先声明变量的情况下进行引用?

my @new = keys %h1; 
my @old = keys %h2; 

function(\@new, \@old); 

但它可以被,而不必首先声明变量做了什么?

function必须有其参数参考

+0

为什么你不试一试呢? – Ingo 2011-04-08 10:05:41

+2

因为你不知道该怎么尝试,所以不能“试一试”呢? – cHao 2011-04-08 10:38:10

+0

她至少可以试图用RHS上的表达来代替@new和@old。然后,如果perl抱怨,她可能会问为什么以及如何防止它。 – Ingo 2011-04-08 10:48:54

回答

7
use strict; 
use Data::Dumper; 

my %test = (key1 => "value",key2 => "value2"); 
my %test2 = (key3 => "value3",key4 => "value4"); 

test_sub([keys %test], [keys %test2]); 

sub test_sub{ 
my $ref_arr = shift; 
my $ref_arr2 = shift; 
print Dumper($ref_arr); 
print Dumper($ref_arr2); 
} 

输出:

$VAR1 = [ 
      'key2', 
      'key1' 
     ]; 
$VAR1 = [ 
      'key4', 
      'key3' 
     ]; 
6
function([ keys %h1 ], [ keys %h2 ]); 

perldoc perlref

可以 使用方括号来创建一个匿名数组的引用:

$数组引用= [1,2,[ 'A', 'B' , 'C']];

相关问题