http://qs321.pair.com?node_id=11146840

htmanning has asked for the wisdom of the Perl Monks concerning the following question:

Monks, I have a log with a field called $text. I recognize 4 digit numbers in $text which represent apartment numbers. I bold those numbers and link to another script like this:

my $digits_4 = qr{ (?<!-)\b[0-9]{4}\b(?!-) }xms; $text =~ s{ ($digits_4) } {<a href="apartments.pl?do_what=view&unit=$1"><b>$1</b></a>} +xmsg;

It works, but it sometimes tags other 4 digits numbers like a year or part of a phone number. I tried setting all unit numbers to a var then using an unless statement like this:

$unitslist_4 = "1001,1002,1003,1004,1101,1102,1103,1104,1201,1202,1203 +,1204,1301,1302,1303,1304,1401,1402,1403,1404, 1501,1502,1503,1504,1601,1602,1603,1604,1701,1702,1703,1704,1801,1802, +1803,1804,1901,1902,1903,1904,2001,2002,2003,2004, 2101,2102,2103,2104,2201,2202,2203,2204,2301,2302,2303,2304,2401,2402, +2403,2501,2502,2503,2504,2505"; unless ($digits_4 =~ /$unitslist/) { $text =~ s{ ($digits_4) } {<a href="apartments.pl?do_what=view&unit=$1"><b>$1</b></a>} +xmsg; }
It works for the first few $text fields, but then stops working altogether. This can't be the right way to do something like this. Any help would be appreciated.