我发现PHP中的print_r非常有用,但不知道Perl中是否有远程等价物?什么是Perl相当于PHP的print_r()?
回答
注意:@ tchrist建议使用Data::Dump而不是Data::Dumper。我没有意识到这一点,但从它的外观来看,它似乎使用起来更容易,产生更好看,更容易解释结果。
在上述链接中示出的示例的片断。
use Data::Dumper;
package Foo;
sub new {bless {'a' => 1, 'b' => sub { return "foo" }}, $_[0]};
package Fuz; # a weird REF-REF-SCALAR object
sub new {bless \($_ = \ 'fu\'z'), $_[0]};
package main;
$foo = Foo->new;
$fuz = Fuz->new;
$boo = [ 1, [], "abcd", \*foo,
{1 => 'a', 023 => 'b', 0x45 => 'c'},
\\"p\q\'r", $foo, $fuz];
########
# simple usage
########
$bar = eval(Dumper($boo));
print([email protected]) if [email protected];
print Dumper($boo), Dumper($bar); # pretty print (no array indices)
$Data::Dumper::Terse = 1; # don't output names where feasible
$Data::Dumper::Indent = 0; # turn off all pretty print
print Dumper($boo), "\n";
$Data::Dumper::Indent = 1; # mild pretty print
print Dumper($boo);
$Data::Dumper::Indent = 3; # pretty print with array indices
print Dumper($boo);
$Data::Dumper::Useqq = 1; # print strings in double quotes
print Dumper($boo);
确保您本地化任何包变量。例如`local $ Data :: Dumper :: Indent = 3;`。 – 2009-01-28 20:25:48
`Data :: Dump`远远优越。 – tchrist 2012-02-17 15:43:45
由于通常使用Perl,你可能更喜欢古老的数据::自卸车的替代解决方案:
- Data::Dump::Streamer比数据::自卸车一个更简洁的输出,并还可以序列化的一些数据优于Data :: Dumper,
- YAML(或Yaml::Syck,或其他YAML模块)在YAML中生成的数据非常清晰。
当然,使用调试器,您可以使用'x'命令显示任何变量。我特别喜欢'x 2 $complex_structure
'的形式,其中2(或任何数字)告诉调试器仅显示2级嵌套数据。
Data::Dumper的替代方法不生成有效的Perl代码,而是一种更易于删除的格式(与Perl调试器的x
命令相同)为Dumpvalue。它也消耗更少的内存。
还有Data::Dump::Streamer,它比Data::Dumper更适合各种边缘和角落的情况。
我使用Data::Dump,它的输出比Data :: Dumper's(no $ VAR1)更清洁一些,它提供了快捷方式,它也尝试DTRT,即在void context中调用时将打印到STDERR并返回转储字符串时不。
我去找同样的东西,发现this lovely little Perl function,明确意味着生成像print_r()这样的结果。
该脚本的作者在论坛here上询问您的确切问题。
print objectToString($json_data);
给出了这样的输出:
HASH {
time => 1233173875
error => 0
node => HASH {
vid => 1011
moderate => 0
field_datestring => ARRAY {
HASH {
value => August 30, 1979
}
}
field_tagged_persons => ARRAY {
HASH {
nid => undef
}
}
...and so on...
- 1. 什么是python相当于perl“a”..“azc”
- 2. 什么是Perl相当于pygame?
- 3. 这个Perl正则表达式的PHP相当于什么?
- 4. 什么是Perl的相当于grep的一行代码-o
- 5. Perl的相当于Python的dict.get(键,默认)是什么?
- 6. 什么是Perl相当于awk的/ text /,/ END /?
- 7. PHP的列表()相当于什么?
- 8. PHP相当于Perl的URI :: URL
- 9. Perl中的CTRL-D相当于PHP?
- 10. Perl的Tie :: Hash相当于PHP
- 11. 相当于用于Ruby,Perl的Perl Modulino?
- 12. 什么是BCL相当于GetValueElseAdd的PowerCollections
- 13. 什么是新的SDK相当于FB.Facebook.get_isInCanvas
- 14. 什么是C#相当于Java的getAndSet
- 15. 什么是Node的Golang相当于NODE_ENV
- 16. 相当于Promise.then()的任务是什么?
- 17. 什么是iOS中的onDraw相当于
- 18. 什么是相当于on.event.remove的流
- 19. Beautifulsoup的相当于'*'是什么 - find_all?
- 20. 什么是jQuery相当于dojo的marginBox()?
- 21. 什么是此SQL的HQL相当于
- 22. 相当于perror的C++流是什么?
- 23. 什么是WCF的Java相当于
- 24. 什么是MSVC相当于gcc的-Wundef?
- 25. 什么是boto3中的boto.exception.BotoServerError相当于
- 26. fsockopen相当于perl
- 27. PHP ADOdb/PDO相当于Perl DBI quote_identifier?
- 28. 什么是TWIG相当于<?php the_field('field_name'); ?>是?
- 29. 什么是Facebook的PHP SDK相当于FB.getLoginStatus?
- 30. 什么是Rails相当于PHP的echo(“ok”)?
当寻找相同的功能,它通常是一个好主意,说明原来做什么。并不是每个Perl程序员都会知道PHP的print_r()函数的功能。 – 2008-10-23 14:49:33