Les*_*lie 4 perl ansi strawberry-perl
我最近在运行Windows 7的PC上将Strawberry Perl从版本5.14.1.1-32bit升级到5.24.0-64bit.我有一个perl脚本我在Windows和Linux下运行,当我使用旧版本命令时
use if $^O eq 'MSWin32' , 'Win32::Console::ANSI';
Run Code Online (Sandbox Code Playgroud)
工作,但现在我已升级我收到错误消息
Unrecognized character \x0F; marked by <-- HERE after use if $<-- HERE near column9 at p:\bin\abc.pl line 31.
Run Code Online (Sandbox Code Playgroud)
有谁知道改变了什么,以及如何让Strawberry Perl的新版本接受命令?提前感谢所有回复的人.
您的代码包含Shift In控制字符(0x0F),也称为"Control-O",而不是字符^和O.这适用于旧版本的Perl,但在版本5.20.0中已弃用:
变量名中的文字控制字符
这种弃用会影响$\cT之类的内容,其中\ cT是源代码中的文字控件(如字符
NAK或NEGATIVE ACKNOWLEDGE字符).令人惊讶的是,最初这似乎是作为访问变量(如$ ^ T)的规范方式,仅将插入符号表单作为替代添加.文字控制表格已被弃用,主要有两个原因.它具有可能无法修复的错误,例如$\cI不能作为$ ^ I的别名,并且它们的使用不能移植到非ASCII平台:虽然$ ^ T可以在任何地方使用,但是\ cT是EBCDIC中的空白.[perl#119123]
从5.24.0开始,使用包含非图形ASCII控制字符的变量名会导致语法错误.