2011-04-08 19 views
6

Benİlk olarak bir değişken bildirilmeden başvurular yapılabilir mi?

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

function(\@new, \@old); 

çalışır ama ilk değişkenleri bildirmek zorunda kalmadan yapılabilir bu kod? function, bağımsız değişkenlerini referans olarak almış olmalıdır. perldoc perlref kaynaktan

+0

Neden sadece denemiyorsun? – Ingo

+2

Çünkü ne denemeyi bilmeden gerçekten "sadece denemez" olamaz? – cHao

+0

En azından RHS'deki ifadelerle @new ve @old değiştirmeyi denedi. Daha sonra, eğer perl şikayet ederse, neden ve nasıl önleneceğini sorabilirdi. – Ingo

cevap

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); 
} 

Çıktı:

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

:

anonim dizi başvurusu köşeli parantez kullanılarak oluşturulabilir:

$ arrayref = [1, 2, [ 'a', 'b' 'c']];

İlgili konular