Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much

Re^3: perl 5.10 bug or not?

by ww (Archbishop)
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 = ''

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.

Replies are listed 'Best First'.
Re^4: perl 5.10 bug or not?
by AnomalousMonk (Chancellor) on Aug 17, 2013 at 06:55 UTC
    ... there are no GT or LT symbols in OP's sample
        my $email = ''
    hence, dot star swallows all, in the relevant example.

    If the relevant example is
        my $email = ''
        $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 (Scribe) 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 "" with "" 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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1049810]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (9)
As of 2018-03-18 15:41 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (230 votes). Check out past polls.