Strawberry Perl无法识别OSNAME的特殊变量

时间:2016-06-13 14:37:47

标签: 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';

工作,但现在我已升级,我收到错误消息

Unrecognized character \x0F; marked by <-- HERE after use if $<-- HERE near column9 at p:\bin\abc.pl line 31.

有谁知道改变了什么,以及如何让Strawberry Perl的新版本接受命令?提前感谢所有回复的人。

1 个答案:

答案 0 :(得分:7)

您的代码包含Shift In控制字符(0x0F),也称为&#34; Control-O&#34;,而不是字符^O。这适用于旧版本的Perl,但是deprecated in version 5.20.0

  

变量名称中的文字控制字符

     

此弃用会影响$ \ cT之类的内容,其中\ cT是源代码中的文字控件(例如NAKNEGATIVE ACKNOWLEDGE字符)。令人惊讶的是,最初这似乎是作为访问变量(如$ ^ T)的规范方式,而插入符表单只是作为替代添加。

     

文字控制表格已被弃用,主要有两个原因。它具有可能无法修复的错误,例如$ \ cI不能作为$ ^ I的别名,并且它们的使用不能移植到非ASCII平台:虽然$ ^ T可以在任何地方使用,但是\ cT是EBCDIC中的空白。 [perl#119123]

As of 5.24.0,使用包含非图形ASCII控制字符的变量名称会导致语法错误。