درک ارجاعها برای استفادهی مؤثر از 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'}. برای برشها، تغییر سیگیل در اینجا هم به همان شکلی اعمال میشود که برای متغیرهای آرایه و هش اعمال میشود.