sub AUTOLOAD { our $AUTOLOAD; my $s = shift; $AUTOLOAD =~ /.*::get(_next)*(_\w+)*_files*$/ or croak "No such method: $AUTOLOAD"; my ($next, $type) = ($1, $2); if ($next) { # create an iterator my $class = ref($s) . '::Iterator'; if (!$type) { return $class->new($s->get_files); # iterator for all files } else { return $class->new(@{$s->{$type.'_files'}}); # iterator for file subset } } else { return @{$s->{$type.'_files'}}; # return file subset } }