sub AUTOLOAD { my $_call = our $AUTOLOAD; $_call =~ s/.*:://; my $self = shift; my $param = shift; ... $self->{$_call} = $_param || return $self->{$_call}; } #### my $o = Foo->new(); #create new object $o->Available_Param_List(["one", "two"]); #methods that should be available to $o $o->one('this will work ok'); $o->nope('this should print a warn on saying that nope is not available for $o');