المرجع هو مؤشر. مرجع Perl هو نوع عددي يمكن أن يشير إلى متغير أو مصفوفة أو جدول تجزئة (يسمى أيضًا مصفوفة ترابطية) أو حتى روتين فرعي، ويمكن تطبيقه في أي مكان في البرنامج.
عند تعريف متغير، قم بإضافة أمام اسم المتغير للحصول على مرجع للمتغير، على سبيل المثال:
$scalarref = $foo; # مرجع المتغير الحجمي $arrayref = @ARGV; # مرجع القائمة $hashref = %ENV; # مرجع الروتين $coderef = &handler; مرجع
يمكننا استخدام مراجع المصفوفات المجهولة في المصفوفات، باستخدام تعريف []:
$aref= [ 1,"foo",undef,13 ];
لا يزال من الممكن أن تكون عناصر المصفوفة المجهولة مصفوفة مجهولة، لذا يمكننا استخدام هذه الطريقة لإنشاء مصفوفة من المصفوفات، ويمكننا إنشاء مصفوفة من أي بُعد.
$aref = [ [1, 2, 3], [4, 5, 6], [7, 8, 9],]
في التجزئة يمكننا استخدام مراجع التجزئة المجهولة، المحددة باستخدام {}:
$href= { أبريل =>4, أغسطس =>8 };
يمكننا أيضًا إنشاء مرجع روتين فرعي مجهول بدون اسم روتين فرعي:
$coderef = sub { print "Codercto!n" };
يمكن إلغاء المرجعية باستخدام $ أو @ أو % حسب الأنواع المختلفة، ومن الأمثلة على ذلك ما يلي:
نتيجة تنفيذ المثال أعلاه هي:
10 هو: 101 2 3 هو: 123% فار هو: key110key220
إذا لم تكن متأكدًا من نوع المتغير، فيمكنك استخدام ref لتحديده. قائمة القيم المرجعة هي كما يلي. إذا لم تكن هناك القيمة التالية، فإنها تُرجع خطأ:
SCALARARRAYHASHCODEGLOBREF
الأمثلة هي كما يلي:
نتيجة تنفيذ المثال أعلاه هي:
نوع المرجع r: SCALAR نوع المرجع r: ARRAYr نوع المرجع: HASH
يحدث المرجع الدائري عندما يحتوي مرجعان على بعضهما البعض. ويجب عليك استخدامه بعناية، وإلا فإنه سيؤدي إلى تسرب الذاكرة، كما في المثال التالي:
نتيجة تنفيذ المثال أعلاه هي:
قيمة foo هي: REF(0x9aae38)
تنسيق مرجع الوظيفة: &
تنسيق استدعاء الدالة المرجعية: & + اسم المرجع الذي تم إنشاؤه.
الأمثلة هي كما يلي:
نتيجة تنفيذ المثال أعلاه هي:
العنصر: العنصر العمري: 3 العنصر: الاسم العنصر: codercto