後方参照しないグループ化
m//やs///を使う際に()で囲むとそこにマッチした部分を$1などで参照することができます。しかし必ずしも参照するわけではなく、繰り返しのために()で囲むこともよくあります。
そういう場合は(?:)で囲むと$1などで参照できなくなる代わりに少し処理が速くなります。
$val = '3.14'; if ($val =~ m/^[+-]?\d+(?:\.\d+)?$/) { print "match\n"; }
$val = '3.14'; if ($val =~ m/^[+-]?\d+(?:\.\d+)?$/) { print "match\n"; }