Я согласен с @ephemient, что quotemeta здесь не нужна.
Я бы использовал модификатор /x
, чтобы сделать регулярное выражение более читабельным:
if($line =~ m/ \s (.*) \( /x )
и шаг вперед
if($line =~ m/
\s # space
(.*) # capture anything
\( # up to and not including a (
/x )
Уточнение. В настоящее время вы захватываете пространство после English
. Я бы добавил
if($line =~ m/
\s # space
(.*) # capture anythin
\s+ # up to and not including space
\( # a (
/x )
Наконец - посмотрите и посмотрите, что делает ваша программа, если вы дадите ей
1. English (GB) (300 million)
2. Arabic (200 million (2005 value))
Один работает, другой нет. Возможно, не понятно почему!