我该怎么做' print Dumper $ var'在Embperl

时间:2010-12-30 12:26:40

标签: perl embperl

如何在Embperl中执行'print Dumper $ var'之类的操作 - 我这样做了:

[-
$var = (some hash) ;
use Data::Dumper
print Dumper $var
-]

和这个

[+ Dumper $var +]

...但无法获得任何输出。

2 个答案:

答案 0 :(得分:5)

我通常使用Data :: Dumper的Dump方法,它生成一个我可以做任何我想做的字符串。

[! use Data::Dumper; # Only need to do once !]
[-
$var = (some hashref);
print Data::Dumper->Dump([$var, \@var2, \%var3]);
# Note that Dump takes an arrayref of SCALARs, therefore
# if you have arrays/hashes, you need to pass references to those
-]

但是,请记住,在EmbPerl中,你需要小心打印:

要打印到Apache的错误日志,请打印到STDERR:

[-
print STDERR Data::Dumper->Dump([$var, \@var2, \%var3]);
-]

要打印到您的网页,请打印到OUT句柄,或使用[+ +]包含。如果它是调试打印,我通常只是将其粘贴在HTML注释中:

<!-- DEBUG
[+ Data::Dumper->Dump([$var, \@var2, \%var3]); +]
[- print OUT Data::Dumper->Dump([$x1, $x2], ["VarName1", "VarName2"]); -]
-->

答案 1 :(得分:1)

您的意思是Embperl吗?

如果要使用Data :: Dumper转储变量,则需要传递其引用。在你的情况下:

use Data::Dumper;
my %hashvar = (a => 1, b => 2);
print Dumper(\%hashvar);

use Data::Dumper;
my $hashref= {a => 1, b => 2};
print Dumper($hashref);

在第一种情况下,变量是一个哈希,所以你必须采用它的引用;在第二个中,您有一个对哈希的引用,因此按原样传递给Data::Dumper