discourse-legacysite-perl/site/glist/templates/help/GT/Dumper.html
2024-06-17 22:24:05 +10:00

466 lines
12 KiB
HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>GT::Dumper - Convert Perl data structures into a string.</title>
<link rev="made" href="mailto:root@penguin.office.gossamer-threads.com" />
<style type="text/css">
/* $MVD$:fontset("Untitled Font Set 1","ARIEL","HELVETICA","HELV","SANSERIF") */
/* $MVD$:fontset("Arial","Arial") */
/* $MVD$:fontset("Arial Black","Arial Black") */
/* $MVD$:fontset("Algerian","Algerian") */
body {
background-color: white;
font-family: Verdana, Arial, sans-serif;
font-size: small;
color: black;
}
p {
background-color : white;
font-family : Verdana, Arial, sans-serif;
font-size : small;
color : black;
}
h1 {
font-family : Verdana, Arial, sans-serif;
font-weight : bold;
font-size : medium;
background-color : white;
color : maroon;
}
h2 {
font-family : Verdana, Arial, sans-serif;
font-size : medium;
font-weight : bold;
color : blue;
background-color : white;
}
h3 {
font-family : Verdana, Arial, sans-serif;
font-weight : bold;
font-size : medium;
color : black;
background-color : white;
}
h4 {
font-family : Verdana, Arial, sans-serif;
font-weight : bold;
font-size : small;
color : maroon;
background-color : white;
}
h5 {
font-family : Verdana, Arial, sans-serif;
font-weight : bold;
font-size : small;
color : blue;
background-color : white;
}
h6 {
font-family : Verdana, Arial, sans-serif;
font-weight : bold;
font-size : small;
color : black;
background-color : white;
}
ul {
font-family : Verdana, Arial, sans-serif;
font-size : small;
color : black;
}
ol {
font-family : Verdana, Arial, sans-serif;
font-size : small;
color : black;
}
dl {
font-family : Verdana, Arial, sans-serif;
font-size : small;
color : black;
}
li {
font-family : Verdana, Arial, sans-serif;
font-size : small;
color : black;
}
th {
font-family : Verdana, Arial, sans-serif;
font-size : small;
color : black;
}
td {
font-family : Verdana, Arial, sans-serif;
font-size : small;
color : black;
}
dl {
font-family : Verdana, Arial, sans-serif;
font-size : small;
color : black;
}
dd {
font-family : Verdana, Arial, sans-serif;
font-size : small;
color : black;
}
dt {
font-family : Verdana, Arial, sans-serif;
font-size : small;
color : black;
}
code {
font-family : Courier;
font-size : small;
color : black;
}
pre {
font-family : Courier;
font-size : small;
color : black;
}
.mvd-H1 {
font-family : Verdana, Arial, sans-serif;
font-weight : bold;
font-size : 14.0pt;
background-color : transparent;
background-image : none;
color : maroon;
}
.mvd-H2 {
font-family : Verdana, Arial, sans-serif;
font-size : 12.0pt;
color : blue;
}
p.indent {
font-family : "Verdana, Arial, sans-serif";
list-style-type : circle;
list-style-position : inside;
color : black;
margin-left : 16.0pt;
}
.mvd-P-indent {
font-family : Verdana, Arial, sans-serif;
list-style-type : circle;
list-style-position : inside;
color : black;
margin-left : 16.0pt;
}
pre.programlisting {
font-size : 9.0pt;
list-style-type : disc;
margin-left : 16.0pt;
margin-top : -14.0pt;
}
.mvd-PRE-programlisting {
font-size : 9.0pt;
list-style-type : disc;
margin-left : 16.0pt;
margin-top : -14.0pt;
}
.mvd-PRE {
font-size : 9.0pt;
}
p.note {
margin-left : 28.0pt;
}
.mvd-P-note {
margin-left : 28.0pt;
}
.mvd-H4 {
font-family : Verdana, Arial, sans-serif;
font-weight : normal;
font-size : 9.0pt;
color : black;
margin-left : 6.0pt;
margin-top : -14.0pt;
}
.mvd-P {
font-family : Verdana, Arial, sans-serif;
font-size : 10.0pt;
color : black;
}
.mvd-BODY {
font-family : Verdana, Arial, sans-serif;
background-color : white;
}
p.indentnobullet {
font-family : Verdana, Arial, sans-serif;
list-style-type : none;
}
.mvd-P-indentnobullet {
font-family : Verdana, Arial, sans-serif;
list-style-type : none;
}
</style>
</head>
<body style="background-color: white">
<p><a name="__index__"></a></p>
<!-- INDEX BEGIN -->
<ul>
<li><a href="#name">NAME</a></li>
<li><a href="#synopsis">SYNOPSIS</a></li>
<li><a href="#description">DESCRIPTION</a></li>
<li><a href="#example">EXAMPLE</a></li>
<li><a href="#methods_functions">METHODS/FUNCTIONS</a></li>
<ul>
<li><a href="#dumper">Dumper</a></li>
<li><a href="#dump">dump</a></li>
<li><a href="#dump_structure">dump_structure</a></li>
</ul>
<li><a href="#see_also">SEE ALSO</a></li>
<li><a href="#maintainer">MAINTAINER</a></li>
<li><a href="#copyright">COPYRIGHT</a></li>
<li><a href="#version">VERSION</a></li>
</ul>
<!-- INDEX END -->
<hr />
<p>
</p>
<h1><a name="name">NAME</a></h1>
<p>GT::Dumper - Convert Perl data structures into a string.</p>
<p>
</p>
<hr />
<h1><a name="synopsis">SYNOPSIS</a></h1>
<pre>
use GT::Dumper;
print Dumper($complex_var);
print GT::Dumper-&gt;dump ( var =&gt; '$MYVAR', data =&gt; $complex_var);</pre>
<p>
</p>
<hr />
<h1><a name="description">DESCRIPTION</a></h1>
<p>GT::Dumper by default exports a method <code>Dumper()</code> which will
behave similar to Data::Dumper's Dumper(). It differs in that
it will only take a single argument, and the variable dumped
will be $VAR instead of $VAR1. Also, to provide easier control
to change the variable name that gets dumped, you can use:</p>
<pre>
GT::Dumper-&gt;dump ( var =&gt; string, data =&gt; yourdata );</pre>
<p>and the dump will start with string = instead of $VAR = .</p>
<p>
</p>
<hr />
<h1><a name="example">EXAMPLE</a></h1>
<pre>
use GT::Dumper;
my %foo;
my @bar = (1, 2, 3);
$foo{alpha} = \@bar;
$foo{beta} = 'a string';
print Dumper(\%foo);</pre>
<p>This will print:</p>
<pre>
$VAR = {
'beta' =&gt; 'a string',
'alpha' =&gt; [
'1',
'2',
'3',
],
};</pre>
<p>
</p>
<hr />
<h1><a name="methods_functions">METHODS/FUNCTIONS</a></h1>
<p>
</p>
<h2><a name="dumper">Dumper</a></h2>
<p><code>Dumper()</code> is exported by default when using GT::Dumper. It takes a single
variable and returns a string representation of the variable. The string can
then be eval()'ed back into the same data structure.</p>
<p>It takes only one argument - the variable to dump. The return is a string of
the form:</p>
<p>$VAR = DATA</p>
<p>where 'DATA' is the actual data structure of the variable. A more powerful and
customizable dumping method is the <a href="#dump">dump</a> method.</p>
<p>
</p>
<h2><a name="dump">dump</a></h2>
<p><code>dump()</code> provides a more customizable method to dumping a data structure. Through
the various options available, listed below, the output of a data structure
dump can be formatted in several different ways.</p>
<p>The options are as follows. Only the <a href="#data">data</a> option is required.</p>
<ul>
<li><strong><a name="item_data">data</a></strong><br />
</li>
The data option takes a data structure to dump. It is required.
<p></p>
<li><strong><a name="item_var">var</a></strong><br />
</li>
By default, a dump is output as an assignment to <code>$VAR</code>. For example, dumping
the string <code>foo</code> would return: <code>$VAR = 'foo'</code>. You can change and even omit
the assignment using the <a href="#item_var"><code>var</code></a> option. To specify a different variable, you
simply specify it as the value here. To have 'foo' dump as just <code>'foo'</code>
instead of <code>$VAR = 'foo'</code>, specify var as an empty string, or undef.
<p></p>
<li><strong><a name="item_tab">tab</a></strong><br />
</li>
When indenting for complex data structures (array refs, hash refs, etc.) an
indent is used. By default, the indent is 4 spaces, however you can change this
by using the <a href="#item_tab"><code>tab</code></a> option.
<p></p>
<li><strong><a name="item_sort">sort</a></strong><br />
</li>
The <a href="#item_sort"><code>sort</code></a> option enables hash key sorting. It is not on by default - to
enable, simply specify the sort option with 1 as the value. The default sort
method is case-sensitive alphabetical. See the <a href="#order">order</a> option for
specifying your own sort order.
<p></p>
<li><strong><a name="item_order">order</a></strong><br />
</li>
When sorting, it is sometimes desirable to use a custom sort order rather than
the default case-sensitive alphabetical sort. The <a href="#item_order"><code>order</code></a> option takes a code
reference and enables custom sort ordering. The code reference will be passed 4
variables. The first and second are the two items being compared - $a and $b in
Perl's sort mechanism. The third and fourth are the values in the hash being
sorted. The code reference, like a Perl sort routine, should return -1 if $a
should come before $b, 0 if $a and $b are equivelant in your sort order, and 1
if $b should come before $a. Because of scoping and package issues in Perl, it
is not possible to directly use $a and $b.
<p></p>
<li><strong><a name="item_compress">compress</a></strong><br />
</li>
The default dump method is to use ' =&gt; ' between hash key and value, to use
indenting, and to add a line break after each dumped element. You can turn all
of these off by using the compress option.
<p>Compression removes all non-essential characters from the output, thus reducing
data size, however also generally making the dump very difficult to read. If
enabled, the dumping behaviour is changed as follows:</p>
<ul>
<li><strong><a name="item_assignment">assignment</a></strong><br />
</li>
If using a var (ie. <code>$VAR = DATA</code>), the spaces around the = will be stripped.
The output will look like: <code>$VAR=DATA</code>
<p></p>
<li><strong><a name="item_hash_keys">hash keys</a></strong><br />
</li>
Instead of placing the 4 characters ' =&gt; ' between hash keys and values, a
single ',' will be used.
<p></p>
<li><strong><a name="item_tabs">tabs</a></strong><br />
</li>
Tabs will not be used.
<p></p>
<li><strong><a name="item_newlines">newlines</a></strong><br />
</li>
Normally, a newline character is added after each dumped element. Compress
turns this off.
<p></p></ul>
<li><strong><a name="item_structure">structure</a></strong><br />
</li>
The structure option causes the dump to be a valid perl structure rather than a
valid perl statement. This differs in two ways - for one, the <a href="#item_var"><code>var</code></a> option is
ignored - it is treated as if a blank <a href="#item_var"><code>var</code></a> was entered, thereby not returning
an assignment. The other difference is that an an ordinary dump adds a
semicolon and newline at the end of the dump, but these are not added when the
structure option is enabled.
<p></p></ul>
<p>
</p>
<h2><a name="dump_structure">dump_structure</a></h2>
<p>This is a quick method to do a structure dump. It takes one argument - the data
to dump. Calling:
$class-&gt;dump_structure($DATA);
is identical to calling:
$class-&gt;dump(data =&gt; $DATA, structure =&gt; 1);
See the <a href="#structure">structure</a> option.</p>
<p>
</p>
<hr />
<h1><a name="see_also">SEE ALSO</a></h1>
<p><a href="glist.cgi?do=admin_gtdoc&topic=/Data/Dumper.html">the Data::Dumper manpage</a></p>
<p>
</p>
<hr />
<h1><a name="maintainer">MAINTAINER</a></h1>
<p>Jason Rhinelander</p>
<p>
</p>
<hr />
<h1><a name="copyright">COPYRIGHT</a></h1>
<p>Copyright (c) 2004 Gossamer Threads Inc. All Rights Reserved.
<a href="http://www.gossamer-threads.com/">http://www.gossamer-threads.com/</a></p>
<p>
</p>
<hr />
<h1><a name="version">VERSION</a></h1>
<p>Revision: $Id: Dumper.pm,v 1.38 2005/02/18 04:44:33 jagerman Exp $</p>
</body>
</html>