Perl Error and Exception Collections

1.Not a CODE reference
Perl试图将一个引用计算成一个代码值(也就是一个子例程),但是找到了指向其他东西的引用。你可以用ref函数看它究竟是什么类型的引用

print ref($var)
我遇到的情况主要是 UI grid 定位:  应该是 $entry_5->grid(-row => 5, -column => 2,-columnspan => 1);
  而我把 “grid ” 漏掉了, 写成了
  $entry_5->(-row => 5, -column => 2,-columnspan => 1);

2. hash- or arrayref expected (not a simple scalar, use allow_nonref to allow this) at test1.pl line 19
用 perl hash 结构创建一个 json utf8字符串, 需要加引用\ , 如:
  encode_json \ %hash; 如果没有引用“\” ,就会报这个错
encode_json 函数等同于 to_json , to_json 也是需要有\ 的

3. garbage after JSON object, at character offset 77(...
4. , or } expected while parsing object/hash
5.  cannot localize lexical variable $x ... 

 Referring : http://www.4byte.cn/question/350961/why-can-t-localize-lexical-variable-in-perl.html

6 . cannot find YAML on Ubuntu
sudo apt-get install libperl-dev
sudo apt-get install libconfig-yaml-perl

7. TK::Error: Cannot decode string with wide characters at c:\Dwimperl\perl\lib/Encode.pm
错误抛出在我从 TK GUI 界面entry 中获得输入,拼接字符串。主要原因是TK entry 输入会自动decode 为Unicode, 而输出需要为 UTF8 , 如果两种字符串在一起混合就会报错。 需要把输入编码为utf8 , encode("utf8".$var)  再与其他字符串变量连接
croak
croak just like die , but die only show error line and position; croak show error line and position and process  name , see:
http://blog.sina.com.cn/s/blog_8711d35c0100wuqc.html

http://stackoverflow.com/questions/24959739/or-expected-while-parsing-object-hash-error-while-parsing-a-json-file
### 回答1: 这个错误信息是说在 collections 模块中没有名为 mutablemapping 的属性。可能是因为你使用了一个过时的 Python 版本,或者你调用了一个不存在的属性。建议你查看 Python 版本和相关代码以解决问题。 ### 回答2: 这个错误提示表示在程序中调用了collections模块的mutablemapping属性,但是该属性并不存在。在Python的collections模块中,有几个与映射(mapping)相关的属性,如Mapping、MutableMapping、ChainMap、Counter等。其中,MutableMapping是一个抽象基类,为所有可变映射提供了基本接口定义。因此,如果想使用MutableMapping属性,需要在程序中导入collections模块,并确保该模块中确实存在MutableMapping属性。 可能导致这个错误的原因有很多,其中可以包括: 1. 导入collections模块时,语法错误或者没有正确地导入MutableMapping属性。 2. 您的版本中collections模块不支持这个属性,或者已经被弃用了。 3. 在程序中没有正确地实例化映射对象,而是尝试在collections模块中调用MutableMapping属性,而导致了错误。 解决这个错误可以尝试以下几个解决方法: 1. 首先,需要检查程序中是否正确导入了collections模块,并正确地调用其中的MutableMapping属性。 2. 如果您的Python版本过低,可能不支持用这种方式创建可变映射对象。请检查Python版本,并升级到支持这种特性的版本。 3. 在程序中正确地创建可变映射对象应该会解决此问题。可以考虑使用Python内置的字典(dict)来创建可变映射对象。 4. 如果需要创建更高级的可变映射对象,例如有序字典,可以使用第三方库进行实现。其中比较受欢迎的库包括OrderedDict、DictMixin等,可以提供一些高级的容器类来扩展Python语言的映射结构。 对于这些库,建议先行查阅官方文档,以便在使用时避免一些常见错误。 ### 回答3: 这个错误信息是Python的一个异常类型,它表示在调用一个模块中没有的属性时出现了错误。在这个特定的错误信息中,Python解释器告诉我们在collections模块中没有mutablemapping这个属性。 collections是Python标准库中一个非常有用的模块,它提供了一系列数据类型和工具来处理集合,序列和映射等数据结构。这个模块中包含了许多有用的类和方法,如Counter、deque、namedtuple和defaultdict等等。但是,这个模块并没有一个叫做mutablemapping的类或方法。 如果您在代码中调用了collections.mutablemapping,那么Python解释器会抛出一个AttributeError异常,因为这个属性并不存在于collections模块中。 为了解决这个问题,您需要检查您的代码,并确保您理解collections模块中具体的类和方法。如果您确实需要可变映射,则可以考虑使用dict或defaultdict类,或者使用第三方库,如munch或attrdict。如果您只是想保持您的映射不变,则可以考虑使用collections中的mapping类,如Mapping或MappingView。 最后,要记住,当您在使用新的Python模块或库时,您应该花时间学习其API文档和使用方法,以避免犯类似的错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值