Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
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 (Beadle) 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 examining the Monastery: (18)
As of 2015-07-06 14:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (75 votes), past polls