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//bytes.pm
package bytes;
our $VERSION = '1.07';
$bytes::hint_bits = 0x00000008;
sub import {
$^H |= $bytes::hint_bits;
}
sub unimport {
$^H &= ~$bytes::hint_bits;
}
sub AUTOLOAD {
require "bytes_heavy.pl";
goto &$AUTOLOAD if defined &$AUTOLOAD;
require Carp;
Carp::croak("Undefined subroutine $AUTOLOAD called");
}
sub length (_);
sub chr (_);
sub ord (_);
sub substr ($$;$$);
sub index ($$;$);
sub rindex ($$;$);
1;
__END__
=head1 NAME
bytes - Perl pragma to expose the individual bytes of characters
=head1 NOTICE
Because the bytes pragma breaks encapsulation (i.e. it exposes the innards of
how the perl executable currently happens to store a string), the byte values
that result are in an unspecified encoding.
B<Use of this module for anything other than debugging purposes is
strongly discouraged.> If you feel that the functions here within
might be useful for your application, this possibly indicates a
mismatch between your mental model of Perl Unicode and the current
reality. In that case, you may wish to read some of the perl Unicode
documentation: L<perluniintro>, L<perlunitut>, L<perlunifaq> and
L<perlunicode>.
=head1 SYNOPSIS
use bytes;
... chr(...); # or bytes::chr
... index(...); # or bytes::index
... length(...); # or bytes::length
... ord(...); # or bytes::ord
... rindex(...); # or bytes::rindex
... substr(...); # or bytes::substr
no bytes;
=head1 DESCRIPTION
Perl's characters are stored internally as sequences of one or more bytes.
This pragma allows for the examination of the individual bytes that together
comprise a character.
Originally the pragma was designed for the loftier goal of helping incorporate
Unicode into Perl, but the approach that used it was found to be defective,
and the one remaining legitimate use is for debugging when you need to
non-destructively examine characters' individual bytes. Just insert this
pragma temporarily, and remove it after the debugging is finished.
The original usage can be accomplished by explicit (rather than this pragma's
implicit) encoding using the L<Encode> module:
use Encode qw/encode/;
my $utf8_byte_string = encode "UTF8", $string;
my $latin1_byte_string = encode "Latin1", $string;
Or, if performance is needed and you are only interested in the UTF-8
representation:
utf8::encode(my $utf8_byte_string = $string);
C<no bytes> can be used to reverse the effect of C<use bytes> within the
current lexical scope.
As an example, when Perl sees C<$x = chr(400)>, it encodes the character
in UTF-8 and stores it in C<$x>. Then it is marked as character data, so,
for instance, C<length $x> returns C<1>. However, in the scope of the
C<bytes> pragma, C<$x> is treated as a series of bytes - the bytes that make
up the UTF8 encoding - and C<length $x> returns C<2>:
$x = chr(400);
print "Length is ", length $x, "\n"; # "Length is 1"
printf "Contents are %vd\n", $x; # "Contents are 400"
{
use bytes; # or "require bytes; bytes::length()"
print "Length is ", length $x, "\n"; # "Length is 2"
printf "Contents are %vd\n", $x; # "Contents are 198.144 (on
# ASCII platforms)"
}
C<chr()>, C<ord()>, C<substr()>, C<index()> and C<rindex()> behave similarly.
For more on the implications, see L<perluniintro> and L<perlunicode>.
C<bytes::length()> is admittedly handy if you need to know the
B<byte length> of a Perl scalar. But a more modern way is:
use Encode 'encode';
length(encode('UTF-8', $scalar))
=head1 LIMITATIONS
C<bytes::substr()> does not work as an I<lvalue()>.
=head1 SEE ALSO
L<perluniintro>, L<perlunicode>, L<utf8>, L<Encode>
=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 | |