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 )