以干净的方式查看变量内容

Posted

技术标签:

【中文标题】以干净的方式查看变量内容【英文标题】:Viewing the variable content in a clean way 【发布时间】:2012-11-01 18:38:34 【问题描述】:

所以我用来查看变量内容的方式是在我的模板工具包中使用 Data::Dumper:

[% 使用自卸车 %] [% Dumper.dump(varname) %]

但我得到的结果有点乱——所有关于表关系、列类型和属性等的信息。

我想知道是否有办法获得“干净”的变量内容 - 仅在查询的当前结果+相关结果集(即,当我将 php 与 cakephp 框架一起使用时,有一个 'debug(varname )' 命令提供了这样的结果,看起来像这样http://pastebin.com/Hut0LnAb)。

【问题讨论】:

您是否将输出插入 html 而不将其转换为 HTML? TT没有过滤器可以转义为HTML吗?然后将其包装在 PRE 标签中。请记住,TT 和 Data::Dumper 都与 HTML 无关。 您所说的是格式化,但不幸的是,这不是我所要求的。比方说,我需要获取变量的过滤内容 - 没有所有列类型数据和所有其他内容 - 只有查询内容(如我的 php 示例中) 请显示您获得的输出的屏幕截图。我不完全理解这个问题。 据我了解,它与转储 ORM 对象(如 DBIC 对象)有关。 也许Stringification section of DBIC's cookbook 可以帮助... 【参考方案1】:

Data::Printer 来救援! 它的对象转储更易于阅读:

my $obj = SomeClass->new;
p($obj);
# produces:
\ SomeClass  
    Parents       Moose::Object
    Linear @ISA   SomeClass, Moose::Object
    public methods (3) : bar, foo, meta
    private methods (0)
    internals: 
       _something => 42,
    

与模板工具包兼容:

[% USE DataPrinter %]
html-formatted, colored dump of the same data structure:
[% DataPrinter.dump_html( myvar ) %]

它也“知道”如何处理 DBIx::Class:

use Data::Printer
    filters => 
        -external => [qw[DB]], # use DB filter
    , class => 
        expand => 2, # traverse object 2-levels deep
        linear_isa => 0, # hide not-so-relevant information
    ;

...

my $obj = $schema
    ->resultset('AddressState')
    ->search(,  prefetch => [qw[country]] )
    ->single;
p $obj;

【讨论】:

哇,这正是我想要的,它甚至还支持模板工具包。我已阅读 Data::Printer 配置部分,但找不到问题的答案 - 是否有可能在对象转储中获得相关的结果集? (即“消息”有许多“cmets”,所以当我转储对象“消息”时,它也会显示相关的 cmets) 你可以增加对象遍历的深度:use Data::Printer max_depth => 5 也许你应该启用join的预取? 对不起@kK-Storm,我的错!这是您导入 Data::Printer 的方式,它以您期望的方式遍历 ResultSet:use Data::Printer filters => -external => [qw[DB]], class => linear_isa => 0, expand => 2 ;(仍然需要预取!) @kK-Storm 回答已编辑 :) 但是,我不知道如何让 Data::Printer 停止显示特定的内部结构......【参考方案2】:

你可以使用

 [% Dumper.dump_html(variable) %]

见: http://template-toolkit.org/docs/modules/Template/Plugin/Dumper.html

【讨论】:

以上是关于以干净的方式查看变量内容的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式创建 pro 时如何在 Visual Studio 中查看资源文件内容

UITableView:以编程方式滚动内容视图

低代码平台-宜搭的核心概念

如何将输出写入 Android 中的 Log?

如何以编程方式创建带有内容的 UIImage [关闭]

怎么查看idea是不是卸载干净