in reply to How do I use a sort routine from a different package/module?

There are (at least) two ways to access sort routines in a different package:

use strict; use warnings; use my_sort_routines; package myprogram; my @data = ( 4, 2, 1, 3 ); my @sorted_proto = sort my_sort_routines::prototyped @data; my @sorted_qual = sort my_sort_routines::qualify_pkg @data; print @sorted_proto, "\n"; #1234 print @sorted_qual, "\n"; #1234 package my_sort_routines; sub prototyped ($$) { # Access the arguments directly by indexing @_ $_[0] <=> $_[1]; } sub qualify_pkg { # Qualify $a and $b with the name of the calling package # Symbolic refs require "no strict refs" here # Symbol::qualify could simplify this, but this illustrates # how to do it without an additional module my $pkg = caller; no strict 'refs'; ${"${pkg}::a"} <=> ${"${pkg}::b"}; }

Links:

Replies are listed 'Best First'.
Re: Answer: How do I use a sort routine from a different package/module?
by salva (Canon) on Jun 09, 2005 at 11:15 UTC
    there is an obvious third way: let the sub on the other package do the full sort, not just the comparison!

    This would also allow for further optimizations (i.e., using the ST) when the data requires it.