Thanks a lot for your help ! I just tried the solution Tyke
came up with. And it seems like a pretty good one (use vars qw/$a $b/;)
I tried it and it works perfectly and I haven't been able to
create a situation in which it doesn't work. So I think I'll go for
this one.
This solution has the same problems as my my-predeclare solution has. If somebody is stupid enough to assign something to $a and $b, then this method won't work for the single-call case. But on the other side, the single-call case will never work, if somebody actually uses variables called $a and $b in any way other than within a sort-callback.
No. Your my-declaration had the problem that you changed
$a and $b to lexical variables, so when the sort function
was setting the globals $a and $b, the function
looked at the wrong variables.
Let us not mention the fact that your example assumed that
the data never would include false values...