NAME
Class::Args - Write and Call methods in your style.
SYNOPSIS
package Some::Module;
use Class::Args;
# constructor
sub new { bless {},shift };
sub hoge {
my ($self, $arg1, $arg2) = args(@_);
# You can call other functions with $self.
# Moreover, you can use $self as hash reference even
# this function was called in non object-oriented style.
if($self->{_cache}){
$rv = $self->{_cache}; # use cache
}
else{
$rv = $self->other_function($arg1, $arg2);
$self->{_cache} = $rv; # store cache
}
return $rv;
}
# in your script
use Some::Module;
my $obj = new Some::Module;
print $obj->hoge('foo', 'bar'); # ok
print Some::Module::hoge('foo', 'bar'); # ok
# same as
print Some::Module->hoge('foo', 'bar'); # ok
DESCRIPTION
There's more than one way to do it!
There are object oriented style and procedural style in this world.
But if you are using Class::Args, you can write methods in your favorite style
and users can call it in their favorite style.
EXPORT
Function "args" was imported by default.
B<If you don't want to import it>, write as below:
use Class::Args();
and in function write as below:
sub hoge {
my ($self, $arg1, $arg2) = Class::Args::args(@_);
...
}
Instead of writing "Class::Args::args(@_)", you can write "Class::Args::a(@_)".
I don't like to write long chars.
This is why I named this module not "Class::Argument" but "Class::Args".
FUNCTIONS
args();
my ($self, $arg1, $arg2) = args(@_);
# or
my ($self, @args) = args(@_);
Adjust function arguments.
Always function receives blessed hash reference ($self) as first argument.
Class::Args creates and supplies it if first argument is not $self.
Auto-created $self is cached so three calling styles as below are equal.
They share same $self.
Some::Module::func('foo', 'bar');
Some::Module->func('foo', 'bar');
func('foo', 'bar'); # if func() was imported.
Of course, $self will be different if function was called in object oriented style.
$obj1->func('foo', 'bar');
$obj2->func('foo', 'bar');
Notice that auto-created $self is not initialized.
It is created as an empty blessed hash reference.
a
Alias of "args".
SEE ALSO
TO DO
I will make option which create object ( do "new Some::Module" ) and set it in
auto-created $self instead empty hash reference.
AUTHOR
Kagurazaka Mahito , < mahito@cpan.org >
COPYRIGHT AND LICENSE
Copyright (C) 2005 by Kagurazaka Mahito
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.