Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask
 
PerlMonks  

Re^5: Dangerous Names

by ikegami (Patriarch)
on Dec 17, 2008 at 22:09 UTC ( [id://731079]=note: print w/replies, xml ) Need Help??


in reply to Re^4: Dangerous Names
in thread Dangerous Names

Ah, I see what you mean. You're wrong about it dying, though. It's only warning.

I don't find it unusual since I've previously heard that { $a cmp $b }, { $a <=> $b }, { $b cmp $a } and { $b <=> $a } are handled specially to avoid having to call a Perl sub repeatedly.

>perl -MO=Concise -e"@a = sort { $a <=> $b } @a" 8 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(main 2 -e:1) v ->3 - <1> ex-aassign vKS/64 ->8 - <1> ex-list lK ->- 3 <0> pushmark s ->4 7 <@> sort lK/INPLACE,NUM ->8 4 <0> pushmark s ->5 6 <1> rv2av[t7] lKRM*/1 ->7 5 <#> gv[*a] s ->6 - <1> ex-list lK ->- - <0> ex-pushmark s ->- - <1> ex-rv2av lKRM*/1 ->- - <0> ex-gv s ->- -e syntax OK >perl -MO=Concise -e"@a = sort { 1; $a <=> $b } @a" 8 <@> leave[1 ref] vKP/REFC ->(end) 1 <0> enter ->2 2 <;> nextstate(main 2 -e:1) v ->3 - <1> ex-aassign vKS/64 ->8 - <1> ex-list lK ->- 3 <0> pushmark s ->4 7 <@> sort lKS*/INPLACE ->8 4 <0> pushmark s ->5 - <1> null sK/1 ->5 - <1> ex-leave sKP ->- - <0> enter s ->- - <;> nextstate(main 1 -e:1) v ->- - <0> ex-const v ->- - <;> nextstate(main 1 -e:1) v ->- - <2> ncmp[t5] sK/2 ->(end) - <1> ex-rv2sv sK/1 ->- - <#> gvsv[*a] s ->- - <1> ex-rv2sv sK/1 ->- - <#> gvsv[*b] s ->- 6 <1> rv2av[t7] lKRM*/1 ->7 5 <#> gv[*a] s ->6 - <1> ex-list lK ->- - <0> ex-pushmark s ->- - <1> ex-rv2av lKRM*/1 ->- - <0> ex-gv s ->- -e syntax OK

While I don't find it unusual, I do think the difference in behaviour is a bug.

Replies are listed 'Best First'.
Re^6: Dangerous Names
by samtregar (Abbot) on Dec 17, 2008 at 22:13 UTC
    Oh, right, I have die on warnings running in this context I think.

    UPDATE: No, actually it does die. This is not a warning. Observe:

    $ perl -e '@names = (["Nan Tregar"], ["Sam Tregar"]); eval { @names + = sort { $a->[0] <=> $b->[0] } @names; }; print "ERROR WAS: $@"' ERROR WAS: Sort subroutine didn't return a numeric value at -e line + 1.

    -sam

      Oops, I guess I flubbed my test code.

      I submitted a bug report.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (6)
As of 2024-04-18 05:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found