in reply to Automagic subroutines

rje,
As others have pointed out, there are already modules that do this. As revdiablo pointed out, there are ways to avoid using eval to dynamically create subs and this fully functional example allows them to be lvaluable.
package Cool; use strict; use warnings; sub new { my $class = shift; my $self = bless {}, $class; $self->_Init( @_ ); return $self; } sub _Init { my $self = shift; { no strict 'refs'; for my $method ( @_ ) { *{ $method } = sub :lvalue { $_[0]->{$method} }; } } } "That's cool man";
And here is a script that uses it:
#!/usr/bin/perl use strict; use warnings; use Cool; my $obj = Cool->new( qw(foo bar baz) ); $obj->bar = "A better way of doing this"; print $obj->bar, "\n";

Cheers - L~R

Replies are listed 'Best First'.
Re^2: Automagic subroutines
by rje (Deacon) on Jan 05, 2005 at 16:32 UTC
    Thanks LR!

    These are great counter-examples, because they give me a much-needed introduction on using typeglobs... which is something I've never used before.

    You guys are helping me understand Perl better. As well as giving me some good CPAN references. Thanks and keep up the good work!

    Rob