草莓Perl不识别OSNAME的特殊变量
我最近在运行Windows 7的PC上将Strawberry Perl从5.14.1.1-32bit版本升级到5.24.0-64bit。我有一个在Windows和Linux下运行的perl脚本,当我使用旧版本的命令时
use if $^O eq 'MSWin32' , 'Win32::Console::ANSI';
工作,但现在我升级了我得到的错误信息
Unrecognized character x0F; marked by <-- HERE after use if $<-- HERE near column9 at p:binabc.pl line 31.
有谁知道发生了什么变化,以及如何让新版本的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控制字符的变量名会导致语法错误。
链接地址: http://www.djcxy.com/p/47211.html上一篇: Strawberry Perl not recognising special variable for OSNAME