Преимущества применения операции qr// проявляются, например, в следующей ситуации. Допустим,
что мы собираемся многократно использовать в качестве образца достаточно сложное регулярное выражение,
скажем,
/^([^ ]*) *([^ ]*)/.
Его можно использовать непосредственно в операции сопоставления с образцом:
if ($line =~ /^([^ ]*) *([^ ]*)/) {...}
или сохранить в переменной $pattern = "^([^ ]*) *([^ ]*)" и обращаться к переменной:
if ($line =~ /$pattern/) {...}
В обоих случаях регулярное выражение при каждом обращении обрабатывается компилятором,
что при многократном использовании увеличивает время выполнения. Если сохранить образец при
помощи операции qr//:
$pattn = qr/^([^ ]*) *([^ ]*)/
то переменная $pattn будет содержать откомпилированное регулярное выражение, которое можно
неоднократно использовать без дополнительной компиляции.
Флаги imosx имеют тот же смысл, что и в операции замены m//.