Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

Re^3: Prototype like sort()?

by Marshall (Canon)
on Jan 25, 2018 at 10:57 UTC ( [id://1207887]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Prototype like sort()?
in thread Prototype like sort()?

Ok, fair enough. I am beginning to understand your question, but I'm not there yet. $a and $b are special variables that Perl uses.

This can't be simply about sort. Perhaps, can you explain more specifically about what you want?

Replies are listed 'Best First'.
Re^4: Prototype like sort()?
by RonW (Parson) on Jan 27, 2018 at 00:33 UTC

    While I would not recommend it, $a and $b are only special in that they are predeclared and used by sort. Otherwise, you can use them like any other package variable:

    sub mysort (&@) { my $coderef = shift; while (@_ > 1) { $a = shift; $b = $_[0]; my $c = $coderef->(); print " $c"; # do sorting } print "\n"; } mysort { $a <=> $b } qw(1 3 2);

    But, it is a bad idea to use $a and $b except with sort

    But, could use 2 other variables. Just have to declare them.

      While I fully agree with Marshall that prototypes should generally be avoided (that is, unless you really know what your doing and why), and with you that, similarly, $a and $b should also be avoided most of the time, I think that we shouldn't be too dogmatic about that and that it does make sense to use both prototypes and the $a and $b special variables if you're going to write your own sort subroutine.

      BTW, the List::Util module documentation illustrates some cases where it makes perfect sense to use the $a and $b variables in a context that has nothing to do with sorting.

      In the example that I gave in Re: Prototype like sort()?, I'm localizing $a and $b before using them to avoid (at least, I hope) any side effects with their use somewhere else.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (6)
As of 2024-04-23 09:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found