my $tmp = My::Module->new( search_directory => '/some/directory' , archive_directory => '/some/archive' ); $tmp->My::Module::find_files; #### sub new { my($class, %args) = @_; my $self = bless( {} , $class ); my $search_directory = exists $args{search_directory} ? $args{search_directory} : '.'; $self->{search_directory} = $search_directory; my $archive_directory = exists $args{archive_directory} ? $args{archive_directory} : ''; $self->{archive_directory} = $archive_directory; my @found_files = exists $args{found_files} ? $args{found_files} : []; $self->{found_files} = @found_files; return $self; } sub find_files { my $self = shift; find( \&FINDFILES , $self->{search_directory} ); sub FINDFILES { #SITE_TYPE_YY[YY]_MO[_HRMN|_HRMNSC]?.[xx|xxx] if ($_ =~ m/^(\w{3}|\w{4})[_](\w{4})[_](\d{4}|\d{2})[_](\d{2})[_](\d{2})[_]?(\d{2})?(\d{2})?(\d{2})?[.]?(\w{3}|\w{4})?/i) { push @{$self->{found_files}}, $File::Find::name; } } }