Next: c2ph | Previous: blib |  | [Table of Contents] | [Index]

# bytes

- NAME
- SYNOPSIS
- DESCRIPTION
- SEE ALSO

## NAME

bytes - Perl pragma to force byte semantics rather than character semantics

## SYNOPSIS

        use bytes;
        no bytes;

## DESCRIPTION

WARNING: The implementation of Unicode support in Perl is incomplete. See the perlunicode manpage for the exact details.

The `use bytes` pragma disables character semantics for the rest of the lexical scope in which it appears. `no bytes` can be used to reverse the effect of `use bytes` within the current lexical scope.

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 `use bytes` is in 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 UTF8 and stores it in $x. Then it is marked as character data, so,
    for instance, length $x returns 1. However, in the scope of the
    bytes pragma, $x is treated as a series of bytes - the bytes that make
    up the UTF8 encoding - and length $x returns 2:

        $x = chr(400);
        print "Length is ", length $x, "\n";     # "Length is 1"
        printf "Contents are %vd\n", $x;         # "Contents are 400"
        {
            use bytes;
            print "Length is ", length $x, "\n"; # "Length is 2"
            printf "Contents are %vd\n", $x;     # "Contents are 198.144"
        }

For more on the implications and differences between character semantics and byte semantics, see the perlunicode manpage.

## SEE ALSO

the perlunicode manpage, the utf8 manpage

[Top] Generated by Pod::HTML 0.43 on Mon Mar 19 17:34:05 2001