Wow, thanks. It works, but only on the first $text field. This whole section is in a while loop. So we search the database then print the latest 50 records after doing the text switching like this:
while (($pointer = $sth->fetchrow_hashref) && ($current_count <= $stop
+count)){
$current_count++;
if ($current_count >= $startcount && $current_count <= $st
+opcount) {
my %valid_apt_numbers;
for my $unit ( split( /,/, q{1001,1002,1003,1004,1101,1102,1103,1104,1
+201,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} ) ) {
$valid_apt_numbers{ $unit } = 1;
}
if( exists $valid_apt_numbers{ $digits_4 } ) {
$text =~ s{\b($digits_4)\b}{<a href="apartments.pl?do_what=view&unit
+=$1"><b>$1</b></a>}xmsg;
}
print qq~
$text
~;
}
}