Мне кажется, это немного неправильно - вам нужна (), чтобы определить, какой у вас матч.
http://perldoc.perl.org/perlre.html
Буферы захвата
Конструкция брекетинга (...)
создает буферы захвата. Ссылаясь на
текущее содержимое буфера позже
на, в пределах того же шаблона, используйте \ 1
для первого, \ 2 для второго и
скоро. Вне матча используйте «$»
вместо "\". (Обозначение
работает в определенных обстоятельствах за пределами
матч. Смотрите предупреждение ниже о
\ 1 против $ 1 для деталей.) Возвращаясь
к другой части матча называется
обратная ссылка.
Так что в основном вы можете использовать
if ($str =~ /^0+(.)/) { print "matched $1"; }
Если у вас есть несколько сгруппированных совпадений, они будут равны $ 1, $ 2, $ 3 ... и т. Д., Например,
if ($str =~ /(0*)(1*)/) { print "I've got $1 and $2"; }