Perl - 第十三章 | Perl 引用(參考)
Perl引用是一種標量資料類型,它保存另一個值的位置,該值可以是標量,數組或哈希。由於其標量性質,因此可以在任何地方使用引用,也可以使用標量。
你可以構造包含對其他列表的引用的列表,這些列表可以包含對哈希的引用,依此類推。這就是在Perl中構建嵌套資料結構的方式。
建立引用
定義變量的時候,在變量名前面加個\,就得到了這個變量的一個引用,比如:
1 | $scalarref = \$foo; # 標量變量引用 |
在數組中我們可以用匿名數組引用,使用 [] 定義:
1 | $aref= [ 1,"foo",undef,13 ]; |
匿名數組的元素仍然可以是匿名數組,所以我們可以用這種方法構造數組的數組,可以構造任意維度的數組。
1 | my $aref = [ |
在哈希中我們可以用匿名哈希引用,使用 {} 定義:
1 | $href= { APR =>4, AUG =>8 }; |
我們也可以建立一個沒有子程序名的匿名子程序引用:
1 | $coderef = sub { print "MoroseDog!\n" }; |
取消引用
取消引用可以根據不同的類型使用 $, @ 或 % 來取消,範例如下:
1 | #!/usr/bin/perl |
這將產生以下結果:
1 | 10 為 : 10 |
如果你不能確定變量類型,你可以使用 ref 來判斷,返回值列表如下,如果沒有以下的值返回 false:
1 | SCALAR |
範例如下:
1 | #!/usr/bin/perl |
這將產生以下結果:
1 | r 的引用類型 : SCALAR |
循環引用
循環引用在兩個引用相互包含是出現。你需要小心使用,不然會導致內存洩露,如下範例:
1 | #!/usr/bin/perl |
這將產生以下結果:
1 | Value of foo is : REF(0x7f8211810b50) |
引用函數
函數引用格式: &
調用引用函數格式: & + 建立的引用名。
範例如下:
1 | #!/usr/bin/perl |
這將產生以下結果:
1 | 元素 : age |