リファレンスを理解することは、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'}です。
スライスでは、配列変数やハッシュ変数の場合と同じように、シジルの変化が当てはまります。