in reply to simpler regex

Since there's always more than one way to do it, you could consider operating on each part of the name befor doing the join:
sub fullname { my (@parts) = @_; for my $p (@parts) { $p = length($p) > 1 ? $p : # not a single - don't change $p =~ /[a-z]/i ? $p . '.' : # single letter - add a dot $p; # not a letter - don't change } my $name = join(" ", @parts); return $name; }
Breaking it up like this might be preferable if the problem were more complex, because really long regex's can be difficult to maintain. For example, if you decided to add a dollar sign in front of single digits, you could just add this line (after the add a dot line):
$p =~ /\d/ ? '$' . $p : # single digit - add a $

This seems easier (to me) than rewriting the regex, and less likely to introduce subtle bugs due to differences in regex behavior.

Unless you're a regex master, I think it's best to keep them as simple as possible. And if you ARE a regex master, but have to work on a team where other people are NOT - then it's STILL best to keep them simple as possible!

Replies are listed 'Best First'.
Re^2: simpler regex
by chrism01 (Friar) on May 11, 2007 at 01:04 UTC
    Following on, the CURRENT team may all be masters, but people move on. You can guarantee (99.99% of the time), that sooner or later a non-master will join ... and they'll curse your name ;-)