use strict;
my $str = '54 1% 2.11 MB 52 min 0.0 49.0 0.0 test1 test1_4.1.6_Win_x86_install_en-US.tar
55 17% 31.89 MB 1 min 0.0 1263.0 0.0 test344 base-2.10.6-x86_64.dmg
56 17% 31.18 MB 1 min 0.0 1267.0 0.0 test2 base-2.10.4-x86_64.dmg
57 15% 27.12 MB 2 min 0.0 1066.0 0.0 test23 base-2.10.6-setup.exe
58 20% 32.16 MB 1 min 0.0 1196.0 0.0 test232 base-2.10.8-x86_64-2.dmg
59* 0% None 599 days 0.0 0.0 0.0 test12 base.1.2_Linux_x86_deb.tar.gz
60 14% 26.31 MB 2 min 0.0 1243.0 0.0 test23 base-2.10.4-setup-2.exe
61 0% None Unknown 0.0 0.0 None Idle base-0.9.24.1.exe
Sum: 150.8 MB 0.0 6084.0';
my $regex = qr/^\s*(\d+)\D*(\d+)/mp;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html