เรื่องมีอยู่ว่า ปกติแล้ว การใช้ regular expression ใน perl นั้น perl จะพยายามหา string ที่ยาวที่สุดที่เป็นไปได้ออกมา

ยกตัวอย่างเช่น
เรามี string "test regular expression" แล้วเราใช้ regular expression หา substring ที่ขึ้นต้นด้วย r และลงท้ายด้วย r
เราจะได้ output เป็น "regular expr" แต่ถ้าเรา้ต้องการให้ได้ output เป็น "regular" ก็จะมีวิธีแก้ปัญหาดังนี้ครับ

[hide=5]
เราสามารถกำหนดให้เรา shortest substring โดยการใส่ ? ไว้หลัง repetitive operation (*,+,...) ครับ

shortest match:
Code:
$str = "test regular expression";
($out) = $str =~ m/(r.*?r)/;
print $out;
[/hide]