Inspired by the request over at hashes, arrays, and references... oh my (the gist is
creating objects from XML), i wanted to
create a "real" object - one that has accessor methods
instead of relying on the client to access $self's reference
directly. I also wanted to be able to specify those methods
easily, and more importantly, be able to pass a hash to
the constructor and have it assign all of the
attributes for me. Enter Class::MethodMaker:
Apologies to any Pete Best fans out there. ;)#!/usr/bin/perl -l package Beatle; use Class::MethodMaker new_hash_init => 'new', get_set => [qw(name instruments)], ; package main; use strict; use warnings; use XML::Simple; my $xml = XMLin(\*DATA, KeyAttr => []); for (@{$xml->{beatle}}) { my $beatle = Beatle->new(%$_); print $beatle->name, ":"; print "\t$_" for @{$beatle->instruments}; } __DATA__ <beatles> <beatle name="Paul"> <instruments>Voice</instruments> <instruments>Bass</instruments> <instruments>Guitar</instruments> <instruments>Piano</instruments> </beatle> <beatle name="John"> <instruments>Voice</instruments> <instruments>Guitar</instruments> <instruments>Rhodes</instruments> </beatle> <beatle name="George"> <instruments>Voice</instruments> <instruments>Guitar</instruments> <instruments>Sitar</instruments> </beatle> <beatle name="Ringo"> <instruments>Voice</instruments> <instruments>Drums</instruments> <instruments>Percussion</instruments> </beatle> </beatles>
jeffa
L-LL-L--L-LL-L--L-LL-L-- -R--R-RR-R--R-RR-R--R-RR B--B--B--B--B--B--B--B-- H---H---H---H---H---H--- (the triplet paradiddle with high-hat)
Back to
Cool Uses for Perl