in reply to Re: Problem with Sort::External 0.16
in thread Problem with Sort::External 0.16

tilly: The bug in the module is that it is not prepared to handle a sort routine that can receive 2 distinct arguments and return 0.

This problem should be resolved in Sort::External version 0.17. The $comparecode closure which you provided a band-aid for has been superseded by a private _compare() method, which should be able to handle both those sortsubs which use $Sort::External::a and $Sort::External::b and those which use positional arguments:

# Compare two elements using either standard lexical comparison or the + sortsub # provided to the object's constructor. sub _compare { my ( $self, $item_a, $item_b ) = @_; my $sortsub = $self->_get_sortsub; if ( defined $sortsub ) { local $a = $item_a; local $b = $item_b; return $sortsub->( $a, $b ); } else { return $item_a cmp $item_b; } }
--
Marvin Humphrey
Rectangular Research ― http://www.rectangular.com