2014-01-25 71 views
0

我是新來的Perl;這是我關於這個話題的第二堂課。Perl中引用的目的是什麼?

我明白如何使用在Perl引用(在一個基本水平),但我不明白爲什麼。下面是一個在教科書中介紹參考文獻的例子,附加了我的評論。

$array_ref = ["val1", "val2", "val3"]; #create an array reference 
print("$$array_ref[1]\n"); #immediately dereference it to print the second element 

爲什麼你會使用的參考,而不是寫:

@array_name = ("val1", "val2", "val3"); #create an array 
print("$array_name[1]\n"); #print the second element 

如果沒有優勢,在這種情況下使用的參考,你可以提供一個例子,其中它會有所作爲?

回答

8

你不會在那裏使用參考。

數組和哈希的值只能是標量,所以您可以使用引用來將數組或哈希存儲到其中之一。

push @a, \@b; 

只有標量的列表可以傳遞給一個子程序,所以你會使用一個引用數組或哈希傳遞到其中的一個。

f(\@a, \@b); 

只有標量的列表可以通過一個子程序返回,所以你會使用一個參考返回一個數組或哈希。

return (\@a, \@b); 

IO對象和(直到最近)正則表達式對象不能存儲在變量的變量中。那裏使用了參考。

open(my $fh, '<', $0) or die $!; 
print(ref($fh), "\n"); 

3

參考在Perl幫助使複雜的數據結構。

my $a = [ 
     [1, 2], 
     [3, 4], 
]; 

print $a->[1]->[0]; #Will print 3 

有了參考的幫助,甚至您可以輕鬆構建複雜的數據結構,如:

my $employee = { 
    name =>"xyz", 
    age => 22, 
    contactnums => [ 9xxxxxxxx, 7xxxxxxxx ], 
    addresses => { 
        office => 'something1', 
        residential => 'something2', 
        permanent => 'something3', 
       } 
    id => '12121', 
}; 
如同Perl多維數組可以用參照執行