[sf-perl] RE oddity

Quinn Weaver qw at sf.pm.org
Wed Feb 15 12:59:35 PST 2006


On Wed, Feb 15, 2006 at 11:10:08AM -0800, Rich Morin wrote:
> Actually, I'm not sure how Perl could act as I want here,
> while dealing correctly with sharp signs in character
> classes.  So, let's refocus the question:
> 
>   How should this code be written, in order to be fast
>   and well-documented?


    # Punt weird characters.
    $line =~ s|[\000-\010\012-\037\177-\377']||g;
    #            ^^^^^^^  ^^^^^^^^ ^^^^^^^^^
    #            nul-bs    nl-us    del-... and '

You can omit the ^^^^'s if you wish, but I find they help direct my
eyes to the right part of the regex.

In addition, I would probably expand "nl", "bs", and "us" to something more
verbose.  You could take an additional line to do it:

    # Punt weird characters.
    $line =~ s|[\000-\010\012-\037\177-\377']||g;
    #            ^^^^^^^  ^^^^^^^^ ^^^^^^^ ^
    #            nul-      nl-      del-   ' (single quote)
    #            backspace whatever ...,

Here I took the further liberty of breaking out the single quote into
its own comment "field".

Finally, I would change "Punt" to "Ignore", since not everyone
understands US football metaphors.

Hope this helps.  I spend a lot of time trying to optimize for
maintainability, so I have lots of opinions on the issue. ;)

PS:  If you're interested in optimizing for maintainability,
Damian's _Perl Best Practices_ is a great place to start.

--
qw (Quinn Weaver); #President, San Francisco Perl Mongers
=for information, visit http://sf.pm.org/weblog =cut


More information about the SanFrancisco-pm mailing list