- 招聘 : Java研发
- 论坛徽章:
- 0
|
from list,
- #!/usr/bin/perl
- use strict;
- use warnings;
- my $foo = Foo->new(1,2);
- print join(", ", $foo->foo, $foo->bar, $foo->baz), "\n";
- $foo->baz(3);
- print join(", ", $foo->foo, $foo->bar, $foo->baz), "\n";
- package Foo;
- BEGIN {
- our $AUTOLOAD;
- our @fields = qw<foo bar baz>;
- }
- sub new {
- our @fields;
- my $class = shift;
- my %self;
- @{self}{@fields} = (@_, (0) x @fields);
- return bless \%self, $class;
- }
- sub AUTOLOAD {
- our ($AUTOLOAD, @fields);
- my $self = shift;
- my $sub = (split '::', $AUTOLOAD)[-1];
- return if $sub eq 'DESTROY';
- die "$sub not defined" unless grep { $sub eq $_ } @fields;
- #if there were args, then this is a setter
- $self->{$sub} = shift if @_;
- return $self->{$sub};
- }
复制代码 |
|