Sub-Parameters
view release on metacpan or search on metacpan
Makefile.PL view on Meta::CPAN
PM => {
'lib/Sub/Parameters.pm' => '$(INST_LIBDIR)/Parameters.pm',
},
PREREQ_PM => {
'Test::More' => 0,
'Devel::LexAlias' => 0.01,
'Attribute::Handlers' => 0,
'Hook::LexWrap' => 0,
'Devel::Caller' => 0.02,
($] >= 5.007002 ?
('PadWalker' => 0.05)
: ()),
},
);
sub MY::postamble {
return <<EOF
README: $module
\tpod2text $module > README
EOF
}
lib/Sub/Parameters.pm view on Meta::CPAN
sub UNIVERSAL::Parameter : ATTR(VAR) {
# 4 is a magic number dependant on Attribute::Handlers
local $Carp::CarpLevel = 4;
croak "your perl is not new enough to use the :Parameter form"
if $] < 5.007002;
my $sub = caller_cv($Carp::CarpLevel);
my $referent = $_[2];
require PadWalker;
my %names = reverse %{ PadWalker::peek_sub( $sub ) };
my $fullname = $names{$referent}
or croak "couldn't find the name of $referent";
++$Carp::CarpLevel;
_Parameter($sub, $referent, $fullname, $_[4]);
}
sub _Parameter {
my ($sub, $referent, $fullname, $data) = @_;
$data ||= 'copy'; # valid values: qw(copy rw)
lib/Sub/Parameters.pm view on Meta::CPAN
=item Think about positional @foo:Parameter slurp rather than @foo = [] semantics
=item think about methods
=back
=head1 SEE ALSO
C<Attribute::Handlers>, C<PadWalker>, C<Hook::LexWrap>, C<Devel::LexAlias>
=head1 AUTHOR
Richard Clamp E<lt>richardc@unixbeard.netE<gt>
=head1 COPYRIGHT
Copyright (c) 2002, Richard Clamp. All Rights Reserved. This module
is free software. It may be used, redistributed and/or modified under
( run in 0.587 second using v1.01-cache-2.11-cpan-05444aca049 )