Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?
 
PerlMonks  

Re^3: perl 5.10 bug or not?

by ww (Bishop)
on Aug 16, 2013 at 23:57 UTC ( #1049810=note: print w/ replies, xml ) Need Help??


in reply to Re^2: perl 5.10 bug or not?
in thread perl 5.10 bug or not?

True... (and probably I should give myself a downvote for lack of precision)... BUT , there are no GT or LT symbols in OP's sample

my $email = 'someuser@example.com'

hence, dot star swallows all, in the relevant example.

If I've misconstrued your question or the logic needed to answer it, I offer my apologies to all those electrons which were inconvenienced by the creation of this post.


Comment on Re^3: perl 5.10 bug or not?
Download Code
Re^4: perl 5.10 bug or not?
by AnomalousMonk (Abbot) on Aug 17, 2013 at 06:55 UTC
    ... there are no GT or LT symbols in OP's sample
        my $email = 'someuser@example.com'
    hence, dot star swallows all, in the relevant example.

    If the relevant example is
        my $email = 'someuser@example.com'
        $email =~ /(.*) (<.*>)/;
        say "1='$1' 2='$2'";
    from the OP, then dot star – i.e., (.*) – swallows nothing at all. The  '<' and  '>' characters are required to match, therefore there is no match, no swallowing, no capturing, nuttin'. As pointed out elsewhere, not even $1, $2, etc., are altered. In fact, because the first  (.*) capture group is followed by a required  ' ' (space), the angle brackets don't even figure in:  .* will initially grab everything, then backtrack repeatedly to try to match a space; finding none, it will eventually give up everything it grabbed and announce its miserable failure, triggering overall match failure.

Re^4: perl 5.10 bug or not?
by sotona (Acolyte) on Aug 20, 2013 at 15:28 UTC

    The problem is actually why do I get some capture if I had no previous successful match.

    In case of "foo <bar>" I definitely should get two captures, but I have no clue why do I get a capture "bar.com" with "foo@bar.com" sample. Observed on v5.10.0 DEVEL34916

      See perlre:

      NOTE: Failed matches in Perl do not reset the match variables, which makes it easier to write code that tests for a series of more specific cases and remembers the best match.

      $1 and $2 have their old values from a match somewhere else in your code.

      Always guard use of $1 with an if statement to make sure it matched:

      if( m/(.*) <(.*)>/ ) { print "Matched '$1' + '$2'"; } else { print "Did not match"; };

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1049810]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (11)
As of 2014-12-19 21:52 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (92 votes), past polls