NAME warnings::method - Produces warnings if methods are called as functions VERSION This document describes warnings::method version 0.03 SYNOPSIS use warnings::method; # or use warnings::method 'FATAL'; package Foo; sub bar :method{ # ... } Foo->bar(); # OK # the following cases warnings "Method Foo::bar() called as a function" Foo::bar(); # WARN my $method_ref = \&Foo::bar; # WARN sub f{ goto &Foo::bar; # WARN } DESCRIPTION You shouldn't call a method as a function, e.g. "UNIVERSAL::isa($o, 'ARRAY')". It's considered harmful, because such code doesn't call overridden methods in any classes. This pragmatic module produces warnings if methods are called as functions. Here, *methods* are subroutines declared with the :method attribute. This module scans the compiled syntax tree, checks function calls and produces warnings when dangerous function calls are detected. All the processes finish in compile time, so this module has no effect on run-time behavior. The "UNIVERSAL::isa" and "UNIVERSAL::can" distributions are modules based on the same concept, but they produce warnings at run time. INTERFACE "use/no warnings::method;" Enables/Disables the "method" warnings. They are equivalent to "use/no warnings 'method'" if "warnings::method" is already loaded. DEPENDENCIES Perl 5.8.1 or later, and a C compiler. BUGS AND LIMITATIONS No bugs have been reported. Please report any bugs or feature requests to "bug-warnings-method@rt.cpan.org/", or through the web interface at . SEE ALSO UNIVERSAL. UNIVERSAL::isa. UNIVERSAL::can. perllexwarn. AUTHOR Goro Fuji LICENSE AND COPYRIGHT Copyright (c) 2008, Goro Fuji . Some rights reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.