summaryrefslogtreecommitdiff
path: root/toke.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2011-10-30 14:33:06 -0700
committerFather Chrysostomos <sprout@cpan.org>2011-11-06 01:13:48 -0700
commit7d7892821ccfd0b84576fc06764ec467e8ca7678 (patch)
tree8a14db3fc316b83374c8d171175537ad6e6c306e /toke.c
parent17e00314cad49c11dda5b621497c7010537844ea (diff)
downloadperl-7d7892821ccfd0b84576fc06764ec467e8ca7678.tar.gz
Add evalbytes function
This function evaluates its argument as a byte string, regardless of the internal encoding. It croaks if the string contains characters outside the byte range. Hence evalbytes(" use utf8; '\xc4\x80' ") will return "\x{100}", even if the original string had the UTF8 flag on, and evalbytes(" '\xc4\x80' ") will return "\xc4\x80". This has the side effect of fixing the deparsing of CORE::break under ‘use feature’ when there is an override.
Diffstat (limited to 'toke.c')
-rw-r--r--toke.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/toke.c b/toke.c
index 3720a83101..b1acdd3408 100644
--- a/toke.c
+++ b/toke.c
@@ -7248,6 +7248,10 @@ Perl_yylex(pTHX)
UNIBRACK(OP_ENTEREVAL);
}
+ case KEY_evalbytes:
+ PL_expect = XTERM;
+ UNIBRACK(-OP_ENTEREVAL);
+
case KEY_eof:
UNI(OP_EOF);