use strict;
my $str = '123456.123abc
00 24 13.13456789 Scopes of Bids (Multiple Contracts) 
00 24 13.16 Scopes of Bids (Multiple-Prime Contract) 
00 00 00 Procurement and Contracting Requirements 
00 01 01 Project Title Page 
00 01 05 Certifications Page 
00 01 07 Seals Page 
00 01 10 Table of Contents 
00 01 15 List of Drawing Sheets 
00 01 20 List of Schedules 
00 10 00 Solicitation 
00 11 00 Advertisements and Invitations 
00 11 13 Advertisement for Bids 
00 11 16 Invitation to Bid 
00 11 19 Request for Proposal 
00 11 53 Request for Qualifications 
00 20 00 Instructions for Procurement 
00 21 00 Instructions 
00 21 13 Instructions to Bidders 
00 21 16 Instructions to Proposers 
00 22 00 Supplementary Instructions 
00 22 13 Supplementary Instructions to Bidders 
00 22 16 Supplementary Instructions to Proposers 
00 23 00 Procurement Definitions 
00 24 00 Procurement Scopes 
00 24 13 Scopes of Bids ';
my $regex = qr/^[^\d]?(?:(\d\d)[^\d]?(\d\d)[^\d]?(\d\d)(\.[\d\w]{1,}){0,1})(.*)$/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