NAME
Petal::Hash - Magical hash for Petal objects
SYNOPSIS
my $object = new My::WonderfulObject;
my $hash = new Petal::Hash (
object => $object,
time => time()
);
# invokes $object->some_method();
$hash->{'object.some_method'};
# invokes $object->other_method ('foo', 'bar');
$hash->{'object.other_method foo bar'};
# invokes $object->other_method ($hash->{'time'});
$hash->{'object.other_method $time'}
# is $object->foo() true?
$hash->{'true:foo'}
# is $object->foo() false?
$hash->{'false:foo'}
# finally, these two lines are *EXACTLY* the same:
$hash->{foo} = $hash->{'object.bar'};
$hash->{'set:foo object.bar'};
DESCRIPTION
Petal::Hash turns a hash into a much more powerful black magic powered structure which can invoke object methods, encode the method results to XML, etc. etc. using the various Petal::Hash::* modules.
EXTENDING
Let's say you want to build a modifier that returns the length of a string, so that you could do:
$hash->{string} = 'foo';
print $hash->{'length:foo'};
You would write the following module:
package MyMod::Length;
sub process
{
my $class = shift;
my $hash = shift;
my $argument = shift;
return length ($hash->fetch ($argument));
}
And at the beginning of your program do:
$Petal::Hash::MODIFIERS->{'length:'} = 'MyMod::Length';
And that's it! Easy, huh?
AUTHOR
Jean-Michel Hiver <jhiver@mkdoc.com>
This module is redistributed under the same license as Perl itself.
SEE ALSO
The standard modifier modules:
Petal::Hash::VAR
Petal::Hash::SET
Petal::Hash::TRUE
Petal::Hash::FALSE