package UNIVERSAL::Acme; $VERSION = '0.01'; my %ORIG; sub import { my @SAVE = grep !/[A-Z]/, keys %UNIVERSAL::; $ORIG{$_} = \&{'UNIVERSAL::'.$_} for @SAVE; delete $UNIVERSAL::{$_} for @SAVE; } { package UNIVERSAL; sub AUTOLOAD { (my $al = $AUTOLOAD) =~ s/.*:://; if ($IN_UA) { if (exists $ORIG{$al}) { goto &{$ORIG{$al}}; } else { local *UNIVERSAL::AUTOLOAD; goto &$AUTOLOAD; } } else { local $IN_UA = 1; eval { $_[0]->$al(@_[1..$#_]) } } } } 1; __END__ =head1 NAME UNIVERSAL::Acme -- Because it's a METHOD, hoser. =head1 SYNOPSIS use UNIVERSAL::Acme; UNIVERSAL::thing($obj, 'whatever'); # calls $obj->thing('whatever') =head1 DESCRIPTION Tired of people who refuse to call functions as methods? Show 'em good with C. =head1 SEE ALSO L, L, L. =head1 AUTHOR Sean O'Rourke, Eseano@cpan.orgE =head1 COPYRIGHT AND LICENSE Copyright (C) 2007 by Sean O'Rourke This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. =cut