View on
MetaCPAN
Dan Kogai > Attribute-Util-1.07 > Attribute::Method

Download:
Attribute-Util-1.07.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  0
View/Report Bugs
Module Version: 1.04   Source  

NAME ^

Attribute::Method - No more 'my $self = shift;'

SYNOPSIS ^

  package Lazy;
  use strict;
  use warnings;
  use Attribute::Method qw( $val );
                        # pass all parameter names here
                        # to make strict.pm happy
  sub new : Method { 
      bless { @_ }, $self 
  }
  sub set_foo : Method( $val ){
      $self->{foo} = $val;
  }
  sub get_foo : Method {
      $self->{foo};
  }
  #....

DESCRIPTION ^

This Attribute makes your subroutine a method -- $self is automagically set and the parameter list is supported.

This trick is actually introduced in "Perl Hacks", hack #47. But the code sample therein is a little buggy so have a look at this module instead.

BUGS ^

None known so far. If you find any bugs or oddities, please do inform the author.

CAVEAT ^

The following does not work.

foo.pl
  use Attribute::Memoize;
  use strict;
  use warnings;
  use lib '.';
  print "loading bar ...\n";
  require bar; # should have been 'use bar;'
  print "bar is loaded\n";
  print bar::func(),"\n";
  print bar::func(),"\n";
  exit 0;
bar.pm
  package bar;
  use strict;
  use warnings;
  use Attribute::Memoize;

  sub func : Memoize {
    print "func runs\n";
    return 123;
  }
  1;

To use modules that use Attribute::Memoize, don't require; use it. That holds true for most Attribute::* modules.

AUTHOR ^

Dan Kogai, <dankogai+cpan at gmail.com>

COPYRIGHT ^

Copyright 2008 Dan Kogai. All rights reserved.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO ^

perl(1), Attribute::Handlers

Perl Hacks, isbn:0596526741

syntax highlighting: