2011-04-08 12 views
6

मैं इस कोड है किपहले एक चर घोषित किए बिना संदर्भ किए जा सकते हैं?

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

function(\@new, \@old); 

काम करता है, लेकिन यह पहला चर घोषित करने के लिए बिना किया जा सकता है है?

function के पास संदर्भ के रूप में इसके तर्क होना चाहिए।

+0

आप क्यों नहीं बस यह कोशिश क्यों नहीं करते? – Ingo

+2

क्योंकि आप वास्तव में "कोशिश करें" नहीं जानते कि क्या प्रयास करना है? – cHao

+0

वह कम से कम @New और @old को आरएचएस पर अभिव्यक्तियों के साथ बदलने की कोशिश कर सकती थी। फिर, अगर पर्ल ने शिकायत की, तो वह पूछ सकती थी कि इसे क्यों और कैसे रोकें। – Ingo

उत्तर

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 से

:

एक गुमनाम सरणी का संदर्भ वर्ग कोष्ठक का उपयोग कर बनाया जा सकता है:

$ arrayref = [1, 2, [ 'एक', 'बी' , 'सी']];