http://www.perlmonks.org?node_id=80178


in reply to Re: Regex Misuse
in thread Regex Misuse

I thought it was funny how he first labelled one way of doing things as a 'mistake', and then proceeded to make the 'mistake' himself:

if ($text =~ m/\.txt$/)

Why not use substr ($text, -4, 4); to extract the .txt, and then eq to compare it?

The reason is, of course, that we write code for readability, not efficiency, for the most part. See "obfuscation" :)

Replies are listed 'Best First'.
Re: Re: Re: Regex Misuse
by srawls (Friar) on May 14, 2001 at 23:46 UTC
    Well, what I said was that
    m/.{$width}/
    could be better written with substr, and still be readable. I have seen from replies to my post that unpack is better yet. I just made the $text =~ /\.txt$/ regex example up as I was writing the post, so it my not be the best, but the point I wanted to get at is if you don't need to match the whole string, then don't. For example:
    $text =~ m/.*$endPat$/
    can be better written (and still readable) as:
    $text =~ m/$endPat$/
    And as you have pointed out, the above code can be written this way (much less readable, I wouldn't recomend using this)
    substr($text,0-length($endPat)) eq $endPat
    On a last note, I never said it was a mistake not to use subst(), I just wanted to point out that in some cases it is better than using a regular expression.

    The 15 year old, freshman programmer,
    Stephen Rawls