Server IP : 149.255.58.128 / Your IP : 216.73.216.69
System : Linux cloud516.thundercloud.uk 5.14.0-427.26.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Jul 17 15:51:13 EDT 2024 x86_64
PHP Version : 8.2.28
Disable Function : allow_url_include, apache_child_terminate, apache_setenv, exec, passthru, pcntl_exec, posix_kill, posix_mkfifo, posix_getpwuid, posix_setpgid, posix_setsid, posix_setuid, posix_setgid, posix_seteuid, posix_setegid, posix_uname, proc_close, proc_get_status, proc_open, proc_terminate, shell_exec, show_source, system
cURL : ON | WGET : ON | Sudo : OFF | Pkexec : OFF
Upload Files :
Command :
Current File : /usr/share/perl5//sort.pm
package sort;
our $VERSION = '2.04';
# 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::stable_bit = 0x00000100;
$sort::unstable_bit = 0x00000200;
use strict;
sub import {
shift;
if (@_ == 0) {
require Carp;
Carp::croak("sort pragma requires arguments");
}
local $_;
$^H{sort} //= 0;
while ($_ = shift(@_)) {
if ($_ eq 'stable') {
$^H{sort} |= $sort::stable_bit;
$^H{sort} &= ~$sort::unstable_bit;
} elsif ($_ eq 'defaults') {
$^H{sort} = 0;
} else {
require Carp;
Carp::croak("sort: unknown subpragma '$_'");
}
}
}
sub unimport {
shift;
if (@_ == 0) {
require Carp;
Carp::croak("sort pragma requires arguments");
}
local $_;
no warnings 'uninitialized'; # bitops would warn
while ($_ = shift(@_)) {
if ($_ eq 'stable') {
$^H{sort} &= ~$sort::stable_bit;
$^H{sort} |= $sort::unstable_bit;
} else {
require Carp;
Carp::croak("sort: unknown subpragma '$_'");
}
}
}
sub current {
my @sort;
if ($^H{sort}) {
push @sort, 'stable' if $^H{sort} & $sort::stable_bit;
}
join(' ', @sort);
}
1;
__END__
=head1 NAME
sort - perl pragma to control sort() behaviour
=head1 SYNOPSIS
use sort 'stable'; # guarantee stability
use sort 'defaults'; # revert to default behavior
no sort 'stable'; # stability not important
my $current;
BEGIN {
$current = sort::current(); # identify prevailing pragmata
}
=head1 DESCRIPTION
With the C<sort> pragma you can control the behaviour of the builtin
C<sort()> function.
A stable sort means that for records that compare equal, the original
input ordering is preserved.
Stability will matter only if elements that compare equal can be
distinguished in some other way. That means that simple numerical
and lexical sorts do not profit from stability, since equal elements
are indistinguishable. However, with a comparison such as
{ substr($a, 0, 3) cmp substr($b, 0, 3) }
stability might matter because elements that compare equal on the
first 3 characters may be distinguished based on subsequent characters.
Whether sorting is stable by default is an accident of implementation
that can change (and has changed) between Perl versions.
If stability is important, be sure to
say so with a
use sort 'stable';
The C<no sort> pragma doesn't
I<forbid> what follows, it just leaves the choice open. Thus, after
no sort 'stable';
sorting may happen to be stable anyway.
=head1 CAVEATS
As of Perl 5.10, this pragma is lexically scoped and takes effect
at compile time. In earlier versions its effect was global and took
effect at run-time; the documentation suggested using C<eval()> to
change the behaviour:
{ eval 'no sort "stable"'; # stability not wanted
print sort::current . "\n";
@a = sort @b;
eval 'use sort "defaults"'; # clean up, for others
}
{ eval 'use sort qw(defaults stable)'; # force stability
print sort::current . "\n";
@c = sort @d;
eval 'use sort "defaults"'; # clean up, for others
}
Such code no longer has the desired effect, for two reasons.
Firstly, the use of C<eval()> means that the sorting algorithm
is not changed until runtime, by which time it's too late to
have any effect. Secondly, C<sort::current> is also called at
run-time, when in fact the compile-time value of C<sort::current>
is the one that matters.
So now this code would be written:
{ no sort "stable"; # stability not wanted
my $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 = sort::current; }
print "$current\n";
@c = sort @d;
}
=cut
Name |
Size |
Last Modified |
Owner / Group |
Permissions |
Options |
.. | -- | May 20 2025 21:42:20 | 0 / root | 0755 | |
Attribute | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
B | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
CPAN | -- | February 05 2024 20:05:52 | 0 / root | 0755 | |
Class | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
Compress | -- | February 05 2024 19:59:43 | 0 / root | 0755 | |
Config | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
DBM_Filter | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
Devel | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
ExtUtils | -- | May 30 2024 07:43:48 | 0 / root | 0755 | |
File | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
Getopt | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
I18N | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
IO | -- | February 05 2024 19:59:43 | 0 / root | 0755 | |
IPC | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
Locale | -- | April 03 2024 14:39:19 | 0 / root | 0755 | |
Math | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
Memoize | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
Module | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
Net | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
Pod | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
Search | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
Term | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
Text | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
Thread | -- | May 30 2024 07:43:02 | 0 / root | 0755 | |
Tie | -- | May 30 2024 07:43:02 | 0 / root | 0755 | |
Time | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
URI | -- | October 13 2023 17:01:25 | 0 / root | 0755 | |
Unicode | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
User | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
encoding | -- | May 30 2024 07:43:02 | 0 / root | 0755 | |
overload | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
pod | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
unicore | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
vendor_perl | -- | January 17 2025 17:38:37 | 0 / root | 0755 | |
warnings | -- | May 30 2024 07:43:01 | 0 / root | 0755 | |
| | | | | |
AnyDBM_File.pm | 2.557 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
AutoLoader.pm | 15.427 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
AutoSplit.pm | 19.177 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
Benchmark.pm | 30.299 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
CORE.pod | 3.113 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
DB.pm | 18.479 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
DBM_Filter.pm | 14.048 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
DirHandle.pm | 2.036 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
Dumpvalue.pm | 17.254 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
English.pm | 4.649 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
FileCache.pm | 5.419 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
FileHandle.pm | 6.625 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
FindBin.pm | 4.454 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
Internals.pod | 2.515 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
Memoize.pm | 35.344 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
NEXT.pm | 18.54 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
PerlIO.pm | 14.103 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
Safe.pm | 24.77 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
SelectSaver.pm | 1.051 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
SelfLoader.pm | 17.271 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
Symbol.pm | 4.687 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
Test.pm | 29.338 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
Thread.pm | 8.095 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
UNIVERSAL.pm | 6.439 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
URI.pm | 34.135 KB | March 03 2021 15:16:52 | 0 / root | 0644 | |
XSLoader.pm | 10.988 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
_charnames.pm | 33.351 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
autouse.pm | 4.139 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
base.pm | 10.704 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
blib.pm | 2.014 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
bytes.pm | 3.652 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
bytes_heavy.pl | 0.74 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
charnames.pm | 20.44 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
deprecate.pm | 4.495 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
diagnostics.pm | 18.847 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
dumpvar.pl | 15.19 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
feature.pm | 18.558 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
fields.pm | 9.253 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
filetest.pm | 3.909 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
if.pm | 3.526 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
integer.pm | 3.178 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
less.pm | 3.129 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
locale.pm | 4.741 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
meta_notation.pm | 2.067 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
open.pm | 8.313 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
overload.pm | 52.053 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
overloading.pm | 1.766 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
perl5db.pl | 309.662 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
sigtrap.pm | 8.531 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
sort.pm | 3.819 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
strict.pm | 4.627 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
subs.pm | 0.88 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
utf8.pm | 10.179 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |
vars.pm | 2.4 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
vmsish.pm | 4.212 KB | April 03 2024 14:39:02 | 0 / root | 0644 | |
warnings.pm | 49.353 KB | April 03 2024 14:35:12 | 0 / root | 0644 | |