package bytes;
-our $VERSION = '1.00';
+our $VERSION = '1.03';
$bytes::hint_bits = 0x00000008;
sub AUTOLOAD {
require "bytes_heavy.pl";
- goto &$AUTOLOAD;
+ goto &$AUTOLOAD if defined &$AUTOLOAD;
+ require Carp;
+ Carp::croak("Undefined subroutine $AUTOLOAD called");
}
-sub length ($);
+sub length (_);
+sub chr (_);
+sub ord (_);
+sub substr ($$;$$);
+sub index ($$;$);
+sub rindex ($$;$);
1;
__END__
=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
The C<use bytes> pragma disables character semantics for the rest of the
print "Length is ", length $x, "\n"; # "Length is 1"
printf "Contents are %vd\n", $x; # "Contents are 400"
{
- use bytes;
+ 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"
}
+chr(), ord(), substr(), index() and rindex() behave similarly.
+
For more on the implications and differences between character
-semantics and byte semantics, see L<perlunicode>.
+semantics and byte semantics, see L<perluniintro> and L<perlunicode>.
+
+=head1 LIMITATIONS
+
+bytes::substr() does not work as an lvalue().
=head1 SEE ALSO
-L<perlunicode>, L<utf8>
+L<perluniintro>, L<perlunicode>, L<utf8>
=cut