建立引用
建立規則1:在數組或者哈希前加反斜槓
$aref = \@array; # $aref now holds a reference to @array
$href = \%hash; # $href now holds a reference to %hash
當引用被儲存在變量裏,就能夠如普通變量般使用。
建立規則2: [items]建立一個新的匿名數組,且返回一個指向數組的引用。{items}建立一個新的匿名哈希,且返回一個指向哈希的引用。
$aref = [ 1, "foo", undef, 13 ];
# $aref now holds a reference to an array
$href = { APR => 4, AUG => 8 };
# $href now holds a reference to a hash
規則1,規則2的比較:
# This:
$aref = [ 1, 2, 3 ];
# Does the same as this:
@array = (1, 2, 3);
$aref = \@array;
使用引用數組
使用規則 1
使用引用的時候,你能夠將變量放到大括號裏,來代替數組. eg:@{$aref} instead of @array
@a @{$aref} An array
reverse @a reverse @{$aref} Reverse the array
$a[3] ${$aref}[3] An element of the array
$a[3] = 17; ${$aref}[3] = 17 Assigning an element
%h %{$href} A hash
keys %h keys %{$href} Get the keys from the hash
$h{'red'} ${$href}{'red'} An element of the hash
$h{'red'} = 17 ${$href}{'red'} = 17 Assigning an elementide
使用規則 2
規則1的寫法比較難於閱讀,因此,們能夠用簡寫的形式,來方便的閱讀引用。
${$aref}[3] $aref->[3]
${$href}{red} $href->{red}
以上兩種寫法表達的是相同的內容this
箭頭規則
@a = ( [1, 2, 3],
[4, 5, 6],
[7, 8, 9]
);
$a[1] 包含一個匿名數組,列表爲(4,5,6),它同時也是一個引用,使用規則2,咱們能夠這樣寫:$a[1]->[2] 值爲6 ;相似的,$a[1]->[2]的值爲2,這樣,看起來像是一個二維數組。 使用箭頭規則,還能夠寫的更加簡單:
Instead of $a[1]->[2], we can write $a[1][2]
Instead of $a[0]->[1] = 23, we can write $a[0][1] = 23 這樣,看起來就像是真正的二維數據了。
element