in reply to Re^4: Perl bug ? in thread Perl bug ?
like I said. the first argument passed to ok() is $errors && ($errors->[0] =~ /.../i).
what gets really passed is $errors. it's like saying: my @foo = $errors && ($errors->[0] =~ /.../i)
the pattern match isn't executed at all at the first time.
but after processing the first argument, you use $errors->[0] in your second argument. now $errors is autovivified to an array ref before ok() is actyally executed. since $errors is passed as the first argument as an alias, it prints ARRAY(0x137cd48)
Re^6: Perl bug ?
by choroba (Cardinal) on Feb 06, 2013 at 12:55 UTC
|
what gets really passed is $errors
Why? I would expect the result of the && operation to be passed.
| [reply] [d/l] |
|
I would expect the result of the && operation to be passed.
yes, and the result of something_false && something is something_false. the second part is never processed.
| [reply] [d/l] |
|
Oh, I see! Thanks for enlightening me.
| [reply] |
|
|
Now I get it, thanks. Agree.
That's probably most amazing way to shut yourself 3 times in one line of Perl.
| [reply] |
|