Method::Assert - Ensure instance and class methods are called properly
version 0.0.1
package MyClass; use Method::Assert; use Carp qw(confess); sub new { my ($class, @args) = &class_method; my $self = {}; bless $self, $class; $self->_init(@args); return $self; } sub _init { my ($self, @args) = @_; # Perl Critic prefers it this way &instance_method; # still works ... } sub get_output_filename { &instance_method; return shift->{'output_filename'}; } sub set_output_filename { my $self = &instance_method; confess("No parameter specified") unless @_; confess("File already exists") if -e $_[0]; $self->{'output_filename'} = $_[0]; return $self; }
This module will export the two functions named below into the namespace of the package using it. These two functions are useful to do typical checks at the start of functions that are supposed to be either class or instance methods.
Always remember to call these functions as &class_method and &instance_method, or else they will not work properly!
&class_method
&instance_method
If you call them as class_method() or instance_method() a new version of @_ will be initialized, and manipulation of @_ will not work properly.
class_method()
instance_method()
Use this function to check that the sub is called as a class method. If the sub is called as a function, or as an instance method this function will die.
If called in scalar context, will shift of the first argument of the @_ array and return that value. If called in list or void context it will not change @_.
Use this function to check that the sub is called as an instance method. If the sub is called as a function, or as a class method this function will die.
The two functions can NOT be called by the fully qualified method name because they are generated as closures in the calling package's namespace during import(). Writing use Method::Assert () will cause import() not to be executed, which doesn't not make sense. See the section on import in perldoc -f use for more information.
use Method::Assert ()
perldoc -f use
This module uses semantic versioning concepts from http://semver.org/.
Method::Signatures
Devel::Declare
MooseX::Method::Signatures
MooseX::Declare
You can find documentation for this module with the perldoc command.
perldoc Method::Assert
Search CPAN
http://search.cpan.org/dist/Method-Assert
AnnoCPAN: Annotated CPAN documentation
http://annocpan.org/dist/Method-Assert
CPAN Ratings
http://cpanratings.perl.org/d/Method-Assert
CPAN Forum
http://cpanforum.com/dist/Method-Assert
RT: CPAN's Bug Tracker
http://rt.cpan.org/NoAuth/Bugs.html?Dist=Method-Assert
CPANTS Kwalitee
http://cpants.perl.org/dist/overview/Method-Assert
CPAN Testers Results
http://cpantesters.org/distro/M/Method-Assert.html
CPAN Testers Matrix
http://matrix.cpantesters.org/?dist=Method-Assert
Source Code Repository
The code is open to the world, and available for you to hack on. Please feel free to browse it and play with it, or whatever. If you want to contribute patches, please send me a diff or prod me to pull from your repository :)
git://github.com/robinsmidsrod/Method-Assert.git
Please report any bugs or feature requests to bug-method-assert at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Method-Assert. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
bug-method-assert at rt.cpan.org
Robin Smidsrød <robin@smidsrod.no>
This software is copyright (c) 2010 by Robin Smidsrød.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
To install Method::Assert, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Method::Assert
CPAN shell
perl -MCPAN -e shell install Method::Assert
For more information on module installation, please visit the detailed CPAN module installation guide.