当前位置:  开发笔记 > 编程语言 > 正文

为什么我的Perl输出中会看到HASH(0xABCDEF)?

如何解决《为什么我的Perl输出中会看到HASH(0xABCDEF)?》经验,为你挑选了2个好方法。

我正在运行perl,为sun4-solaris-64int构建的v5.6.1

我在数组上调用print:

print "@vals\n";

输出看起来像:

HASH(0x229a4) uid cn attuid

或者另一个例子:

@foo = {};
push(@foo, "c");

print "@foo I am done now\n";

输出:

HASH(0x2ece0) c I am done now

HASH(0x2ece0)来自哪里?



1> Zan Lynx..:

@foo = {}中的大括号正在创建它.大括号创建一个未命名的哈希引用.

如果要将@foo设置为空列表,请使用@foo =()



2> brian d foy..:

理解这类问题的关键是你在输出中得到一个额外的项目.这个项目是什么并不太重要.

一般来说,当容器变量中的容器变量多于(或少于)时,您要做的第一件事就是查看它的内容.Data :: Dumper模块附带Perl,可以为您打印数据结构:

use Data::Dumper;
print Dumper( \@foo );

一旦看到容器中的内容,就可以开始向后工作以了解容器中的内容.你最终注意到在你初始化@foo之后它已经有了一个元素,这不是你想要的.

另一个技巧是检查列表中的元素数量:

print "There are " . @array . " elements in \@array\n";

如果你得到一个你不想要的数字,那就向后工作以找出额外元素出现的时间.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有