瞭解參照是有效使用 Perl 的基本要素。由於參照是純量,而陣列和雜湊只能包含純量,因此參照是巢狀這些資料結構的關鍵。
你可以使用反斜線運算子\,為現有的變數和副程式建立參照:
\$scalar 建立純量參照(這可以是任何純量,例如\1,不只是變數)。\@array 建立陣列參照。\%hash 建立雜湊參照。\&sub 建立程式碼參照。你也可以為陣列、雜湊和副程式建立所謂的匿名參照:
['Alice', 'Bob', 'Charlie'] 建立匿名陣列參照。{foo => 'a', bar => 'b', baz => 'c'} 建立匿名雜湊參照。sub { return 1 } 建立匿名程式碼參照。警告:Perl 中的大括號在某些情境下可能會有歧義。如果你得不到預期的雜湊參照,在開頭加上一個加號來消除歧義,例如+{}。詳情請見大括號。
參照可以透過箭號運算子->存取:
$ref->[0] 存取陣列參照內的元素。$ref->{foo} 存取雜湊參照內的值。$ref->($arg) 透過程式碼參照呼叫副程式。複雜資料結構(例如多維陣列和巢狀雜湊)裡的資料,可以藉由串接索引來存取,例如$ref->{foo}[0]{bar}(等同於$ref->{foo}->[0]->{bar})。
如果你想解參照整個陣列或雜湊,可以使用箭號運算子加上@*或%*,例如$ref->@*或$ref->%*。
你也可以把*換成索引,取得陣列或雜湊參照的切片,例如$ref->@[0..2]或$ref->@{'Foo', 'Bar'}。
對切片而言,符號的變化在這裡的適用方式,和陣列與雜湊變數相同。