草莓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是源代码中的文字控件(例如NAKNEGATIVE 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

下一篇: Invalid access to memory location on 64