http://qs321.pair.com?node_id=183487


in reply to checking the end of line

if ($path == 0)

Remember, you said $path was: 'hiec/by/mlor/kkss23/dndd@@mani/css.cpp/0'.

Try something like this:

if($path =~ /(\d+)$/ == 0) {} else {}

Note that what you used never captured the resulting match (that is, it was used in void context and had not side effects). Using the parentheses like I do, it sets the $1 variable (see perlre) -- note, too, that it also returns the value which I check, so you can say something like  $my_value = ...regex_here...

Replies are listed 'Best First'.
Re: Re: checking the end of line
by I0 (Priest) on Jul 19, 2002 at 23:06 UTC
    You mean
    if( ($path =~ /(\d+)$/)[0] eq 0) {} else {}
      Do I?

      For a string 'stuff_here_then_12' your version captures the 1. It depends if that's what the user wants. Of course there's probably a better way to do this /(\d)\d*$/ comes to mind (and /(\d)+$/ if the user wants the last digit, or even better /(\d)$/ .. updated .. well, if just the last digit is desired and it's always known to be a digit substr could be used more effeciently -- of course, you have to be sure of your data)

      I was under the impressino that he wanted the entire 12 returned.

        For a string 'stuff_here_then_12' ($path =~ /(\d+)$/)[0] captures the 12