Как мне сделать что-то вроде «print Dumper $ var» в Embperl - PullRequest
0 голосов
/ 30 декабря 2010

Как мне сделать что-то вроде 'print Dumper $ var' в Embperl - я сделал это:

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

и это

[+ Dumper $var +]

...но не могу получить никакого вывода.

Ответы [ 2 ]

5 голосов
/ 30 декабря 2010

Я обычно использую метод Data :: Dumper's 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 или используйте [+ +] include. Если это отладочная печать, я обычно просто вставляю ее в комментарий HTML:

<!-- DEBUG
[+ Data::Dumper->Dump([$var, \@var2, \%var3]); +]
[- print OUT Data::Dumper->Dump([$x1, $x2], ["VarName1", "VarName2"]); -]
-->
1 голос
/ 30 декабря 2010

Вы имели в виду 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

...