
YAML::Object - Use OO to point to a yaml-node

0.04

use YAML::Object; # imports yaml_object() $yo = yaml_object($path_to_yaml_file); $complex = $yo->foo->bar->_2->a; $tmp1 = $yo->does_not_exist; # $tmp1 will be a YAML::Object $tmp2 = $tmp1->try_something; # will die() with message:
YAML::Object: -does_not_exist->try_something does not exist>
The first will succeed, to enable you to test if $tmp1 is undef:
if(defined $tmp1) { ... }
$tmp3 = $yo->some_hash; # returns a YAML::Object
$tmp3->{'test'}; # will work, returns a "plain value"
$tmp3->test; # same, but will returns a YAML::Object
Both should behave the same way in your code.
$index = 1; $tmp3 = $yo->some_array; # returns a YAML::Object $tmp3->[$index]; # will work, returns a "plain value" $tmp3->$index; # same result, but will return a YAML::Object $tmp3->_1; # same result as above
The above should behave the same way in your code.

Object constructor. Takes one argument, which can be either:
* A path to a valid YAML-file * A filehandle to read YAML data from * A valid string, containing valid YAML * A hash-ref
Returns a YAML::Object object.

All methods called, will map to an element in the YAML-tree or undef / throw error if not. With two exceptions: AUTOLOAD and import are in use in this package.

The object is overloaded to return the datatype you expect. The datatype returned is NOT an object, so you cannot continue calling methods on that.

$self = sub {[ data, parent-object, key ]};

Jan Henning Thorsen, <pm at flodhest.net>

Please report any bugs or feature requests to bug-pm at flodhest.net, or through the web interface at http://trac.flodhest.net/pm. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

Copyright 2007 Jan Henning Thorsen, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.