Perl Programming Documentation
Download Perl
Explore

Manual

- Overview
- Tutorials
- FAQs
- History / Changes
- License

Reference

- Language
- Functions
- Operators
- Special Variables
- Pragmas
- Utilities
- Internals
- Platform Specific

Modules

- A • B • C • D • E
- F • G • H • I • L
- M • N • O • P • S
- T • U • X

Tools

- Preferences

# evalbytes

Perl 5 version 26.0 documentation
Go to top
Show recent pages
Recently read

# evalbytes

Perl functions A-Z | Perl functions by category | The 'perlfunc' manpage

- 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:

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

  prints

       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.