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

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

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

и это

[+ Dumper $var +]

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

2 ответа

Решение

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

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

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

Другие вопросы по тегам