Да! Это групповой матч. Видя next
там, это, вероятно, в цикле. Однако лучший способ справиться с тем, что у вас есть, - использовать условное выражение и проверить регулярное выражение:
if ( $line =~ /^(\d+)\s/ ) {
$paperAnnot{$1} = $line;
}
или даже лучше, дайте $ 1 имя для самодокументирования:
if ( $line =~ /^(\d+)\s/ ) {
my $index = $1;
$paperAnnot{$index} = $line;
}
Кроме того, вы можете найти больше информации о $1
и его братьях в perldoc perlvar .
А теперь в Perl 5.10 и новее вы можете использовать именованные группы захвата:
use 5.010; # or newer
...
if ( $line =~ /^(?<linenum>\d+)\s/ ) {
$paperAnnot{ $+{linenum} } = $line;
}
Подробнее об именованных группах захвата см. perldoc perlre .