#!/usr/bin/perl -w use strict; my $filter = Filter->new(); $filter->fillFilter(); $filter->doFilter(); package Filter; sub new { my $self = shift(); my $param = shift(); my $data = {}; return(bless $data, $self); } sub fillFilter { my $self = shift(); push @{$self->{'__POOL__'}}, \&{$self->func1}; push @{$self->{'__POOL__'}}, \&{$self->func2}; use Data::Dumper; print Dumper($self); } sub doFilter { my $self = shift(); foreach my $func (@{$self->{'__POOL__'}}) { print &{$func}(), "\n"; } } sub func1 { my $self = shift(); my $param = shift(); print "func1\n"; return(1); } sub func2 { my $self = shift(); my $param = shift(); print "func2\n"; return(1); }