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; } }
In reply to Re^2: Problem with Sort::External 0.16
by creamygoodness
in thread Problem with Sort::External 0.16
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |