Perl 5 version 32.0 documentation


  • evalbytes EXPR

  • evalbytes

    This function is similar to a string eval, except it always parses its argument (or $_ if EXPR is omitted) as a string of independent bytes.

    If called when use utf8 is in effect, the string will be assumed to be encoded in UTF-8, and evalbytes will make a temporary copy to work from, downgraded to non-UTF-8. If this is not possible (because one or more characters in it require UTF-8), the evalbytes will fail with the error stored in $@ .

    Bytes that correspond to ASCII-range code points will have their normal meanings for operators in the string. The treatment of the other bytes depends on if the 'unicode_strings feature is in effect.

    Of course, variables that are UTF-8 and are referred to in the string retain that:

    1. my $a = "\x{100}";
    2. evalbytes 'print ord $a, "\n"';


    1. 256

    and $@ is empty.

    Source filters activated within the evaluated code apply to the code itself.

    evalbytes is available starting in Perl v5.16. To access it, you must say CORE::evalbytes , but you can omit the CORE:: if the evalbytes feature is enabled. This is enabled automatically with a use v5.16 (or higher) declaration in the current scope.