1: #!/usr/bin/perl
2: use warnings;
3: use strict;
4: use Data::Dump qw(dump);
5: use Data::Dumper;
6: use Smart::Comments;
7: use YAML;
8:
9: my @a = (1, [2, 3], {4 => 5});
我这里要对数组 @a 进行 dump 以方便调试和查看其内容。
从我 use 模块也可以看出来我要使用的几种方法:
(1)首先尝试 Data::Dump 的 dump 方法
1: dump(@a);
其对应的输出为:
1: (1, [2, 3], { 4 => 5 })
(2)尝试 Data::Dumper 的 Dumper
1: print Dumper(@a);
其对应的输出为:
1: $VAR1 = 1;
2: $VAR2 = [
3: 2,
4: 3
5: ];
6: $VAR3 = {
7: '4' => 5
8: };
(3) 尝试 Smart::Comments 的 ###
1: ### @a;
其对应的输出为:
1: ### @a: [
2: ### 1,
3: ### [
4: ### 2,
5: ### 3
6: ### ],
7: ### {
8: ### '4' => 5
9: ### }
10: ### ]
(4) 尝试 YAML 里面的 Dump 函数
1: print YAML::Dump(@a);
其对应的输出为:
1: --- 1
2: ---
3: - 2
4: - 3
5: ---
6: 4: 5
(5) 最后尝试一下 print 函数
1: print "@a";
其对应的输出为:
1: 1 ARRAY(0x1acf998) HASH(0x1aece20)
综述:以上几种方法,可以看到各有个的不同,也有侧重点,比如 Data:Dump 几乎是按照代码里面的数据结构输出了; YAML::Dump 是以 yaml 格式输出, 而 print 方法最简单,但是却无法打印内嵌的哈希元素,智能打印其引用的内存地址,这当然不是我们想要的。 Smart::Commnets 的输出很适合进行调试。 所以根据自己的需要各取所需了。 我这里只是列出了 5中方法,参考下面的这篇可以看到更多种方法的对比。