0

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

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

和这个

[+ Dumper $var +]

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

4

2 回答 2

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"]); -]
-->
于 2010-12-30T14:27:21.707 回答
1

你说的是 Emberl 吗?

如果你想用 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

于 2010-12-30T12:51:41.797 回答