Perl 5 version 8.9 documentation
bytes - Perl pragma to force byte semantics rather than character semantics
Perl normally assumes character semantics in the presence of character
data (i.e. data that has come from a source that has been marked as
being of a particular character encoding). When
effect, the encoding is temporarily ignored, and each string is treated
as a series of bytes.
As an example, when Perl sees
$x = chr(400)
, it encodes the character
in UTF-8 and stores it in $x. Then it is marked as character data, so,
. However, in the scope of the
pragma, $x is treated as a series of bytes - the bytes that make
up the UTF8 encoding - and
chr(), ord(), substr(), index() and rindex() behave similarly.
bytes::substr() does not work as an lvalue().