in reply to Recognizing numbers and creating links

As for avoiding phone numbers, I can't really think of much that's better than the solutions you received recently. Here's my take for substitution:

c:\@Work\Perl\monks>perl -wMstrict -le "use 5.010; ;; my $s = 'Sent 1 12 to 1402, 222-2222, 1304, 555.555.5555 and 501, 666 666 6 +666 & 6789'; print qq{'$s'}; ;; my $sep = qr{ [-. ] }xms; my $pn = qr{ \d{3} ($sep) (?: \d{3} \1)? \d{4} }xms; my $an = qr{ \d{3,4} }xms; ;; $s =~ s{ (?| $pn (*SKIP)(*F) | (?<! \d) ($an) (?! \d)) } {<a $1><b>$1</b></a>}xmsg; print qq{'$s'}; " 'Sent 1 12 to 1402, 222-2222, 1304, 555.555.5555 and 501, 666 666 6666 + & 6789' 'Sent 1 12 to <a 1402><b>1402</b></a>, 222-2222, <a 1304><b>1304</b></ +a>, 555.555.5555 and <a 501><b>501</b></a>, 666 666 6666 & <a 6789><b +>6789</b></a>'

Of course, this still uses regex features introduced with Perl version 5.10, and you still haven't said what version you have available, so a possible sticking point there...


Give a man a fish:  <%-(-(-(-<

Replies are listed 'Best First'.
Re^2: Recognizing numbers and creating links
by htmanning (Friar) on Apr 13, 2015 at 23:12 UTC
    Sorry, I think I'm on Perl 5 but I'll try this. It's a little above my head but I'll give it a whirl. Thanks!

      You can find out what your version of Perl is with the  -v (lowercase v) command line switch:

      c:\@Work\Perl\monks>perl -v This is perl 5, version 14, subversion 4 (v5.14.4) built for MSWin32-x +86-multi-thread Copyright 1987-2013, Larry Wall ... more stuff ...
      The  -V (that's uppercase V) switch will give much more info, but you don't need that for now. See all the command line switches in perlrun.

      (And BTW: I hope you aren't running Perl version 5.5!)


      Give a man a fish:  <%-(-(-(-<