我不理解Perl文档中有关3种不同字符串eval类型的解释。如果文档丢失,文档缺失,那么句子的开头并不适合它的结尾,这对文档没有帮助没有帮助。
这三种口味是
@echo off
set CONFIG_FILE=./some.properties
set DEFCONFIG_FILE=./more.properties
set EDA_ARGS=-config %CONFIG_FILE% -defaultconfig %DEFCONFIG_FILE%
set JAVA_ARGS=-Xmx256M
set BOOTCLASSPATH=../lib/1.jar;../lib/2.jar;../lib/3.jar;../4.jar;../5.jar
:run_erp
java -Xbootclasspath/p:%BOOTCLASSPATH% %JAVA_ARGS% -jar ../lib/RUNME.jar %EDA_ARGS%
goto end
:end
才能使用,或use feature qw( eval_bytes );
。答案 0 :(得分:6)
use feature qw( unicode_eval )
可以解决令人困惑的怪癖与eval
混淆,但如果不破坏向后兼容性,则无法修复。
eval的行为有所不同,具体取决于字符串的内部编码,有时将其参数视为字符串,有时也将其视为字符串。
在eval中激活的源过滤器会泄漏到当前正在编译的文件范围内。
use feature qw( unicode_eval )
这会改变。现在eval
将始终将其代码视为字符(即UTF-8)并且不会泄漏。这很可能是你想要的行为。
对于那些真的,真的想要被解释为字节(即ASCII)的代码有evalbytes
,但你可能不需要它。
tl; dr :如果您使用的是5.16或更新版本且您正在使用eval
(您可能不应该这样做),{{ 1}}和use feature qw( unicode_eval )
。它支持UTF-8并修复了eval
怪癖。
或只是use utf8::all
而忘了它。