การอ้างอิงคือตัวชี้ การอ้างอิง Perl เป็นประเภทสเกลาร์ที่สามารถชี้ไปที่ตัวแปร อาเรย์ ตารางแฮช (หรือที่เรียกว่าอาเรย์แบบเชื่อมโยง) หรือแม้แต่รูทีนย่อย
เมื่อกำหนดตัวแปร ให้เพิ่ม หน้าชื่อตัวแปรเพื่อรับการอ้างอิงถึงตัวแปร ตัวอย่างเช่น:
$scalarref = $foo; # การอ้างอิงตัวแปรสเกลาร์ $arrayref = @ARGV; # รายการอ้างอิง $hashref = %ENV; # การอ้างอิงแฮช $coderef = &handler; # การอ้างอิงรูทีนย่อย $globref = *foo ; อ้างอิง
เราสามารถใช้การอ้างอิงอาร์เรย์ที่ไม่ระบุชื่อในอาร์เรย์โดยใช้คำจำกัดความ []:
$aref= [ 1,"foo",undef,13 ];
องค์ประกอบของอาร์เรย์ที่ไม่ระบุชื่อยังคงเป็นอาร์เรย์ที่ไม่ระบุชื่อได้ ดังนั้นเราจึงสามารถใช้วิธีนี้เพื่อสร้างอาร์เรย์ของอาร์เรย์ และเราสามารถสร้างอาร์เรย์ของมิติใดก็ได้
$aref ของฉัน = [ [1, 2, 3], [4, 5, 6], [7, 8, 9],]
ในแฮช เราสามารถใช้การอ้างอิงแฮชที่ไม่ระบุชื่อ ซึ่งกำหนดโดยใช้ {}:
$href= { เม.ย. =>4, ส.ค. =>8 };
นอกจากนี้เรายังสามารถสร้างการอ้างอิงรูทีนย่อยที่ไม่ระบุชื่อโดยไม่มีชื่อรูทีนย่อย:
$coderef = sub { พิมพ์ "Codercto!n" };
การยกเลิกการอ้างอิงสามารถยกเลิกได้โดยใช้ $, @ หรือ % ตามประเภทต่างๆ ดังนี้
ผลลัพธ์ของการดำเนินการตามตัวอย่างข้างต้นคือ:
10 คือ: 101 2 3 คือ: 123%var คือ: key110key220
หากคุณไม่แน่ใจเกี่ยวกับประเภทตัวแปร คุณสามารถใช้ ref เพื่อกำหนดได้ รายการค่าที่ส่งคืนจะเป็นดังนี้ หากไม่มีค่าต่อไปนี้ ก็จะส่งกลับค่าเท็จ:
สกาลาราร์เรย์แฮชโค้ดโกลเบรฟ
ตัวอย่างมีดังนี้:
ผลลัพธ์ของการดำเนินการตามตัวอย่างข้างต้นคือ:
ประเภทการอ้างอิงของ r: SCALAR ประเภทการอ้างอิงของ r: ARRAYr ประเภทการอ้างอิง: HASH
การอ้างอิงแบบวงกลมเกิดขึ้นเมื่อการอ้างอิงสองรายการมีกันและกัน คุณต้องใช้อย่างระมัดระวัง ไม่เช่นนั้นจะทำให้หน่วยความจำรั่ว ดังตัวอย่างต่อไปนี้:
ผลลัพธ์ของการดำเนินการตามตัวอย่างข้างต้นคือ:
ค่าของ foo คือ : REF(0x9aae38)
รูปแบบการอ้างอิงฟังก์ชัน: &
รูปแบบการเรียกใช้ฟังก์ชันอ้างอิง: & + ชื่ออ้างอิงที่สร้างขึ้น
ตัวอย่างมีดังนี้:
ผลลัพธ์ของการดำเนินการตามตัวอย่างข้างต้นคือ:
องค์ประกอบ: อายุ องค์ประกอบ: 3 องค์ประกอบ: ชื่อ องค์ประกอบ: codercto