package sort;
-our $VERSION = '2.00';
+our $VERSION = '2.03';
# The hints for pp_sort are now stored in $^H{sort}; older versions
# of perl used the global variable $sort::hints. -- rjh 2005-12-19
-$sort::hint_bits = 0x00020000; # HINT_LOCALIZE_HH
-
$sort::quicksort_bit = 0x00000001;
$sort::mergesort_bit = 0x00000002;
$sort::sort_bits = 0x000000FF; # allow 256 different ones
$sort::stable_bit = 0x00000100;
+$sort::unstable_bit = 0x00000200;
use strict;
Carp::croak("sort pragma requires arguments");
}
local $_;
- no warnings 'uninitialized'; # bitops would warn
$^H{sort} //= 0;
while ($_ = shift(@_)) {
if (/^_q(?:uick)?sort$/) {
$^H{sort} |= $sort::mergesort_bit;
} elsif ($_ eq 'stable') {
$^H{sort} |= $sort::stable_bit;
+ $^H{sort} &= ~$sort::unstable_bit;
} elsif ($_ eq 'defaults') {
$^H{sort} = 0;
} else {
Carp::croak("sort: unknown subpragma '$_'");
}
}
- $^H |= $sort::hint_bits;
}
sub unimport {
$^H{sort} &= ~$sort::sort_bits;
} elsif ($_ eq 'stable') {
$^H{sort} &= ~$sort::stable_bit;
+ $^H{sort} |= $sort::unstable_bit;
} else {
require Carp;
Carp::croak("sort: unknown subpragma '$_'");
{ use sort qw(defaults _quicksort); # force quicksort
no sort "stable"; # stability not wanted
my $current;
- BEGIN { $current = print sort::current; }
+ BEGIN { $current = sort::current; }
print "$current\n";
@a = sort @b;
# Pragmas go out of scope at the end of the block
}
{ use sort qw(defaults stable); # force stability
my $current;
- BEGIN { $current = print sort::current; }
+ BEGIN { $current = sort::current; }
print "$current\n";
@c = sort @d;
}