NAME
Caller::Easy - less stress to remind returned list from CORE::caller()
SYNOPSIS
use Caller::Easy; # Module name is temporal
# the way up to now
sub foo {
my $subname = (caller(0))[3];
}
# with OO
sub foo {
my $subname = Caller::Easy->new(0)->subroutine();
}
# like a function imported
sub foo {
my $subname = caller(0)->subroutine();
}
All the above will return 'main::foo'
Now you can choise the way you much prefer
DESCRIPTION
Caller::Easy is the easiest way for using functions of CORE::caller()
it produces the easier way to get some info from caller()
with no having to care about namespace.
ATTENTION
We can NOT write like below:
my $subname = caller1->subroutine; # like (caller1)[3];
This would be considered a Bareword.
Constructor and initialization
new()
You can set no argument then it returns the object reference in scalar context.
In list context, you can get just only ( $package, $filename, $line ).
if you set depth(level) like new(1)
, you can get more info from caller ( $package, $filename, $line, $subroutine, $hasargs, $wantarray, $evaltext, $is_require, $hints, $bitmask, $hinthash ) directly with same term for CORE::caller()
To be strictly, you can set depth
parameter like new( depth => 1 )
but we can forget it, just set the natural number you want to set.
Methods (All of them is read-only)
caller()
It is implemented to be alias of new()
but it doesn't matter.
this method is imported to your packages automatically when you use Caller::Easy;
So you can use much freely this method like if there is no module imported.
package()
You can get package name instead of (caller(n))[0]
filename()
You can get file name instead of (caller(n))[1]
line()
You can get the line called instead of (caller(n))[2]
subroutine()
You can get the name of subroutine instead of (caller(n))[3]
hasargs(), wantarray(), evaltext(), is_require(), hints(), bitmask(), hinthash()
Please read CORE::caller
Don't ask me
args()
You can get the arguments of targeted subroutine instead of @DB::args
This method is the unique point of this module.
depth()
You can get what you set.
TODO
- using Moose is a bottle-neck
-
I made this module in a few days with Moose because it's the easiest way. It will be too heavy for some environments.
To abolish Moose is a TODO if this module will be popular.
- rewite the tests
-
I don't know well about CORE::caller!
Why I have written this module is Just only I can't remember what I wanna get with something number from caller() without some reference.
So some of tests may not be appropriate.
- rename the module
-
I have to find the name that deserve it.
- rewite the POD
-
I know well that my English is awful.
SEE ALSO
- CORE::caller
-
If you are confused with this module, Please read this carefully.
- Perl6::Caller
-
One of better implements for using something like this module.
The reason why I reinvent the wheel is that this module has no github repository.
- Safe::Caller
-
The newest implement for something like this module.
It has github repository but usage is limited.
LICENSE
Copyright (C) Yuki Yoshida(worthmine).
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.