রেফারেন্স বোঝা পার্ল কার্যকরভাবে ব্যবহারের একটি মৌলিক অংশ। যেহেতু রেফারেন্সগুলো স্কেলার, আর অ্যারে ও হ্যাশ কেবল স্কেলারই ধারণ করতে পারে, তাই এই ডেটা স্ট্রাকচারগুলো নেস্ট করার মূল চাবিকাঠি হলো রেফারেন্স।
ব্যাকস্ল্যাশ অপারেটর \ ব্যবহার করে বিদ্যমান ভ্যারিয়েবল ও সাবরুটিনের জন্য রেফারেন্স তৈরি করা যায়:
\$scalar দিয়ে একটি স্কেলার রেফারেন্স তৈরি করা যায় (এটি যেকোনো স্কেলার হতে পারে, যেমন \1, কেবল কোনো ভ্যারিয়েবল নয়)।\@array দিয়ে একটি অ্যারে রেফারেন্স তৈরি করা যায়।\%hash দিয়ে একটি হ্যাশ রেফারেন্স তৈরি করা যায়।\&sub দিয়ে একটি কোড রেফারেন্স তৈরি করা যায়।অ্যারে, হ্যাশ ও সাবরুটিনের জন্য আপনি অ্যানোনিমাস রেফারেন্সও তৈরি করতে পারেন:
['Alice', 'Bob', 'Charlie'] দিয়ে একটি অ্যানোনিমাস অ্যারে রেফারেন্স তৈরি করা যায়।{foo => 'a', bar => 'b', baz => 'c'} দিয়ে একটি অ্যানোনিমাস হ্যাশ রেফারেন্স তৈরি করা যায়।sub { return 1 } দিয়ে একটি অ্যানোনিমাস কোড রেফারেন্স তৈরি করা যায়।সতর্কতা: পার্লে দ্বিতীয় বন্ধনী নির্দিষ্ট কিছু প্রসঙ্গে অস্পষ্ট হতে পারে। আপনি যদি প্রত্যাশিত হ্যাশ রেফারেন্স না পান, তাহলে এর অস্পষ্টতা দূর করতে সামনে একটি প্লাস যোগ করুন, যেমন +{}। আরও তথ্যের জন্য দ্বিতীয় বন্ধনী দেখুন।
অ্যারো অপারেটর -> ব্যবহার করে রেফারেন্স অ্যাক্সেস করা যায়:
$ref->[0] দিয়ে অ্যারে রেফারেন্সের ভেতরের একটি এলিমেন্ট অ্যাক্সেস করা যায়।$ref->{foo} দিয়ে হ্যাশ রেফারেন্সের ভেতরের একটি মান অ্যাক্সেস করা যায়।$ref->($arg) দিয়ে কোড রেফারেন্সের মাধ্যমে একটি সাবরুটিন কল করা যায়।জটিল ডেটা স্ট্রাকচারের ভেতরের ডেটা, যেমন মাল্টিডাইমেনশনাল অ্যারে ও নেস্টেড হ্যাশ, সাবস্ক্রিপ্ট চেইন করে অ্যাক্সেস করা যায়, যেমন $ref->{foo}[0]{bar} ($ref->{foo}->[0]->{bar}-এর সমান)।
আপনি যদি একটি সম্পূর্ণ অ্যারে বা হ্যাশ ডিরেফারেন্স করতে চান, তাহলে অ্যারো অপারেটরের পরে যথাক্রমে @* বা %* ব্যবহার করতে পারেন, যেমন $ref->@* বা $ref->%*।
এছাড়াও *-এর জায়গায় একটি সাবস্ক্রিপ্ট বসিয়ে অ্যারে বা হ্যাশ রেফারেন্সের স্লাইসও পাওয়া যায়, যেমন $ref->@[0..2] বা $ref->@{'Foo', 'Bar'}।
স্লাইসের ক্ষেত্রে অ্যারে ও হ্যাশ ভ্যারিয়েবলের মতোই এখানেও সিজিল ভ্যারিয়েন্স প্রযোজ্য।