ใช้ wrap
sub bar () { return "baþ" };
my $wrapped = &bar.wrap( { " → " ~ callsame() ~ " ← " } );
say bar(); # OUTPUT: «→ baþ ← »
เนื่องจากวิธีการดังกล่าวเป็นกิจวัตรคุณจะต้องมีวิธีที่ซับซ้อนกว่านี้เล็กน้อยในการจัดการกับวิธีการเอง แต่นอกเหนือจากนั้นวิธีการนี้ก็เหมือนกันทุกประการเนื่องจากMethod
sเป็นคลาสย่อยของRoutine
s
class Baz {
method bar () { return "baþ" };
}
my &method_bar = Baz.^find_method("bar");
my $wrapped = &method_bar.wrap( { " → " ~ callsame() ~ " ← " } );
say Baz.bar(); # OUTPUT: «→ baþ ← »
$wrapped
เป็นหมายเลขอ้างอิงที่สามารถนำมาใช้ในภายหลังเพื่อแกะมันถ้าจำเป็น
แก้ไข : เพื่อเพิ่มรหัสเพื่อรับการจัดการกับวิธีการเรียนที่นำมาจากที่นี่เป็นต้น