Template::LiquidX::Tag::Dump - Simple Perl Structure Dumping Tag (Functioning Custom Tag Example)


    use Template::Liquid;
    use Template::LiquidX::Tag::Dump;
    print Template::Liquid->parse("{%dump var%}")->render(var => [qw[some sort of data here]]);
        # With Data::Dump installed: ["some", "sort", "of", "data", "here"]


This is a dead simple demonstration of extending Template::Liquid.

This tag attempts to use Data::Dump and Data::Dumper to create stringified versions of data structures...

    use Template::Liquid;
    use Template::LiquidX::Tag::Dump;
    warn Template::Liquid->parse("{%dump env%}")->render(env => \%ENV);

...or the entire current scope with ....

    use Template::Liquid;
    use Template::LiquidX::Tag::Dump;
    warn Template::Liquid->parse('{%dump .%}')
        ->render(env => \%ENV, inc => \@INC);

...or the entire stack of scopes with .*...

    use Template::Liquid;
    use Template::LiquidX::Tag::Dump;
    warn Template::Liquid->parse('{%for x in (1..1) %}{%dump .*%}{%endfor%}')

...becomes (w/ Data::Dump installed)...

    do {
      my $a = [
            forloop => {
              first   => 1,
              index   => 1,
              index0  => 0,
              last    => 1,
              length  => 1,
              limit   => 1,
              name    => "x-(1..1)",
              offset  => 0,
              rindex  => 1,
              rindex0 => 0,
              sorted  => undef,
              type    => "ARRAY",
            x => 1,
      $a->[0][1] = $a->[0][0];

Notice even the internal forloop variable is included in the dump.


This is a 5m hack and is subject to change ...I've included no error handling and it may be completly broken. For a better example, see Template::LiquidX::Tag::Include.

See Also

Liquid for Designers:

Template::Liquid's section on custom tags.


Sanko Robinson <> -

License and Legal

Copyright (C) 2009-2016 by Sanko Robinson <>

This program is free software; you can redistribute it and/or modify it under the terms of The Artistic License 2.0. See the LICENSE file included with this distribution or For clarification, see

When separated from the distribution, all original POD documentation is covered by the Creative Commons Attribution-Share Alike 3.0 License. See For clarification, see