当我使用带有constant.pm的哈希引用时,为什么Perl会抱怨?

当我使用带有constant.pm的哈希引用时,为什么Perl会抱怨?,第1张

概述我有perl,v5.6.1为ActiveState提供的MSWin32-x86-多线程二进制版本638构建. 我正在处理一个Perl脚本,我已经声明了常量,以后用于比较目的.由于某种原因,我收到一个错误,指出常量名称行中的某些内容在脚本的第31行(在下面的代码中使用常量子句后面的行)中有无效字符.我检查并发现Constant名称中的’_'(下划线)是一个合法的角色.我也尝试将’0.00’更改为’0 我有perl,v5.6.1为ActiveState提供的MSWin32-x86-多线程二进制版本638构建.

我正在处理一个Perl脚本,我已经声明了常量,以后用于比较目的.由于某种原因,我收到一个错误,指出常量名称行中的某些内容在脚本的第31行(在下面的代码中使用常量子句后面的行)中有无效字符.我检查并发现Constant名称中的’_'(下划线)是一个合法的角色.我也尝试将’0.00’更改为’0′,看看是否是原因,但我得到了同样的错误.我不确定我做错了什么.任何人都知道为什么编译器不喜欢这个?

谢谢!

这是代码:

use constant {MIN_NET_DLR => 0.00,MAX_NET_DLR => 99.99,MIN_SUM_DLR => 0.00,MAX_SUM_DLR => 999.99,MIN_UNITS => 0,MAX_UNITS => 99,MIN_SUM_UNITS => 0,MAX_SUM_UNITS => 999,PCT_THRES_AO => 1,PCT_THRES_TRANS_CUST_BI => 20,PCT_THRES_CUST => 3,};

问题:

问题是perl 5.6.1提供的常量版本不支持哈希引用.

解:

对常量使用常规声明.因此,声明如下:

use constant MIN_NET_DLR => 0.00;use constant MAX_NET_DLR => 99.99;use constant MIN_SUM_DLR => 0.00;use constant MAX_SUM_DLR => 999.99;use constant MIN_UNITS => 0;use constant MAX_UNITS => 99;use constant MIN_SUM_UNITS => 0;use constant MAX_SUM_UNITS => 999;use constant PCT_THRES_AO =>    1;use constant PCT_THRES_TRANS_CUST_BI => 20;use constant PCT_THRES_CUST => 3;

感谢@leon提供的解决方案以及其他参与其中的人员.

更新:另一个(更优雅的)解决方案是将Perl版本更新为在声明常量时支持哈希引用的版本.

解决方法 问题是您正在使用哈希引用. perl 5.6.1提供的常量版本不支持.您要么必须删除大括号,要么升级常量. 总结

以上是内存溢出为你收集整理的当我使用带有constant.pm的哈希引用时,为什么Perl会抱怨?全部内容,希望文章能够帮你解决当我使用带有constant.pm的哈希引用时,为什么Perl会抱怨?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1267278.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存