#!/usr/bin/perl -w #use strict; package Biff; use Data::Dumper; sub iam { caller(@_)} sub new { my($package, %self)=@_; my $self=bless \%self, $package; foreach my $key (keys %self) { next if $package->can($key); *{"$package\:\:$key"}=sub { # warn Dumper $_[0], $key, scalar @_; if(@_==1) { return $_[0]->{$key}} $_[0]->{$key}=$_[1] }; } return $self; } package Main; use strict; use Data::Dumper; my $biff=Biff::new('Billy::Bob', f=>"ef", b=>"be", c=>"see"); # warn Dumper $biff; print "b is ".$biff->b(), "\n"; print "c is ".$biff->c(), "\n"; $biff->c("sea"); print "c is ".$biff->c(), "\n"; print "class is ".ref $biff, "\n";