$ perl -e '1->method'
Can't call method "method" without a package or object reference at -e line 1.
####
my $result = $obj->methoda->methodb->methodc;
##
##
package Object::EveryMethod;
my $all = bless {}, __PACKAGE__;
sub new { $all }
sub AUTOLOAD { $_[0] }
##
##
# my $False = 0; # old way
my $False = Object::EveryMethod->new();
sub methoda
{
my $self = shift;
#...
if( ... everything worked ) { $self }
else { $False }
}
##
##
sub hey_that_worked
{
not UNIVERSAL::isa( $_[0], 'Object::EveryMethod' )
}
##
##
package Object::EveryMethod;
sub new
{
my $class = shift;
bless {
message => $_[0],
setter => ... caller stuff,
}, $class;
}
sub AUTOLOAD { $_[0] }
sub what_happened { @{ $self }{ qw( message setter ) } }
##
##
sub methoda
{
my $self = shift;
#...
if( ... everything worked ) { return $self }
else
{
my $failure = "Oops, I did it again!";
return Object::EveryMethod->new( $failure );
}
}
##
##
package Object::EveryMethod;
sub new
{
my $class = shift;
bless { ... }, $class;
}
sub AUTOLOAD { $_[0] }
sub can { 1 }
sub what_happened { @{ $self }{ qw( message setter ) } }
##
##
package Object::EveryMethod;
sub new
{
my $class = shift;
bless { ... }, $class;
}
sub AUTOLOAD { $_[0] }
sub can { 0 unless defined &{$_[1]} }
sub what_happened { @{ $self }{ qw( message setter ) } }