in reply to Re^3: defining methods on the fly
in thread defining methods on the fly
#!/usr/local/bin/perl use warnings; use strict; use Want; sub lvalueMethod($) { my ($name) = @_; my ($package) = caller; no strict 'refs'; *{$package . "::" . $name} = sub :lvalue { my $self = shift; if (!want('LVALUE') && ref($self->{$name}) eq 'CODE') { goto &{$self->{$name}}; } $self->{$name}; }; } { package Foo; sub new { bless {}, shift; } main::lvalueMethod("bar"); } my ($x) = Foo->new(); print "$x\n"; $x->bar = 5; print $x->bar, "\n"; $x->bar = sub { print( @_, "\n" ); }; $x->bar("Hello World");
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^5: defining methods on the fly
by flogic (Acolyte) on Aug 03, 2006 at 20:24 UTC | |
Re^5: defining methods on the fly
by revdiablo (Prior) on Aug 04, 2006 at 17:37 UTC | |
by jdhedden (Deacon) on Aug 05, 2006 at 01:57 UTC |