解释perl中3种不同风格的字符串eval

khw*_*khw 1 perl

我不理解Perl文档中有关3种不同字符串eval类型的解释.如果文档丢失,那么文档会出现乱码并没有帮助,因此句子的开头不符合其结尾.

三种口味是


  1. 需要use feature qw( eval_bytes );使用,或CORE::evalbytes.

Sch*_*ern 6

use feature qw( unicode_eval )是否可以解决令人困惑的怪癖与香草eval无法修复而不破坏向后兼容性.

eval的行为有所不同,具体取决于字符串的内部编码,有时将其参数视为字节字符串,有时将其视为字符串.

在eval中激活的源过滤器会泄漏到当前正在编译的文件范围中.

随着use feature qw( unicode_eval )这种变化.现在eval将始终将其代码视为字符(即UTF-8)并且不会泄漏.这很可能是您想要的行为.

对于那些真正想要被解释为字节(即ASCII)的代码的人来说evalbytes,但是你可能并不需要它.

tl; dr:如果你正在使用5.16或更新版本而你正在使用eval(你可能不应该),use feature qw( unicode_eval )和eval.它支持UTF-8并修复了eval怪癖.

或者只是use utf8::all忘记它.