.\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.13)
.\"
.\" Standard preamble:
.\" ========================================================================
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
.if n .sp
..
.de Vb \" Begin verbatim text
.ft CW
.nf
.ne \\$1
..
.de Ve \" End verbatim text
.ft R
.fi
..
.\" Set up some character translations and predefined strings. \*(-- will
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
.\" double quote, and \*(R" will give a right double quote. \*(C+ will
.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
.\" nothing in troff, for use with C<>.
.tr \(*W-
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
.ie n \{\
. ds -- \(*W-
. ds PI pi
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
. ds L" ""
. ds R" ""
. ds C` ""
. ds C' ""
'br\}
.el\{\
. ds -- \|\(em\|
. ds PI \(*p
. ds L" ``
. ds R" ''
'br\}
.\"
.\" Escape single quotes in literal strings from groff's Unicode transform.
.ie \n(.g .ds Aq \(aq
.el .ds Aq '
.\"
.\" If the F register is turned on, we'll generate index entries on stderr for
.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
.\" entries marked with X<> in POD. Of course, you'll have to process the
.\" output yourself in some meaningful fashion.
.ie \nF \{\
. de IX
. tm Index:\\$1\t\\n%\t"\\$2"
..
. nr % 0
. rr F
.\}
.el \{\
. de IX
..
.\}
.\" ========================================================================
.\"
.IX Title "YAML::Node 3"
.TH YAML::Node 3 "2019-05-11" "perl v5.10.1" "User Contributed Perl Documentation"
.\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\" way too many mistakes in technical documents.
.if n .ad l
.nh
.SH "NAME"
YAML::Node \- A generic data node that encapsulates YAML information
.SH "SYNOPSIS"
.IX Header "SYNOPSIS"
.Vb 2
\& use YAML;
\& use YAML::Node;
\&
\& my $ynode = YAML::Node\->new({}, \*(Aqingerson.com/fruit\*(Aq);
\& %$ynode = qw(orange orange apple red grape green);
\& print Dump $ynode;
.Ve
.PP
yields:
.PP
.Vb 4
\& \-\-\- !ingerson.com/fruit
\& orange: orange
\& apple: red
\& grape: green
.Ve
.SH "DESCRIPTION"
.IX Header "DESCRIPTION"
A generic node in \s-1YAML\s0 is similar to a plain hash, array, or scalar node in
Perl except that it must also keep track of its type. The type is a \s-1URI\s0 called
the \s-1YAML\s0 type tag.
.PP
YAML::Node is a class for generating and manipulating these containers. A \s-1YAML\s0
node (or ynode) is a tied hash, array or scalar. In most ways it behaves just
like the plain thing. But you can assign and retrieve and \s-1YAML\s0 type tag \s-1URI\s0 to
it. For the hash flavor, you can also assign the order that the keys will be
retrieved in. By default a ynode will offer its keys in the same order that
they were assigned.
.PP
YAML::Node has a class method call \fInew()\fR that will return a ynode. You pass
it a regular node and an optional type tag. After that you can use it like
a normal Perl node, but when you YAML::Dump it, the magical properties will
be honored.
.PP
This is how you can control the sort order of hash keys during a \s-1YAML\s0
serialization. By default, \s-1YAML\s0 sorts keys alphabetically. But notice in the
above example that the keys were Dumped in the same order they were assigned.
.PP
YAML::Node exports a function called \fIynode()\fR. This function returns the tied
object so that you can call special methods on it like \->\fIkeys()\fR.
.PP
\&\fIkeys()\fR works like this:
.PP
.Vb 2
\& use YAML;
\& use YAML::Node;
\&
\& %$node = qw(orange orange apple red grape green);
\& $ynode = YAML::Node\->new($node);
\& ynode($ynode)\->keys([\*(Aqgrape\*(Aq, \*(Aqapple\*(Aq]);
\& print Dump $ynode;
.Ve
.PP
produces:
.PP
.Vb 3
\& \-\-\-
\& grape: green
\& apple: red
.Ve
.PP
It tells the ynode which keys and what order to use.
.PP
ynodes will play a very important role in how programs use \s-1YAML\s0. They are
the foundation of how a Perl class can marshall the Loading and Dumping of
its objects.
.PP
The upcoming versions of \s-1YAML\s0.pm will have much more information on this.
.SH "AUTHOR"
.IX Header "AUTHOR"
Ingy döt Net <ingy@cpan.org>
.SH "COPYRIGHT"
.IX Header "COPYRIGHT"
Copyright 2001\-2014. Ingy döt Net
.PP
This program is free software; you can redistribute it and/or modify it under
the same terms as Perl itself.
.PP
See <http://www.perl.com/perl/misc/Artistic.html>
Copyright 2K16 - 2K18 Indonesian Hacker Rulez