sub _detect_type {
... # logic to determine type
return \&_open_unzipped if $rule1;
return \&_open_zipped if $rule2;
return undef;
}
####
package Import;
use Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(load_file);
@EXPORT_OK = qw(_detect_type
_open_zipped
_open_unzipped
);
%EXPORT_TAGS = {STD => \@EXPORT,
TEST => \@EXPORT_OK
};
sub load_file {
my $filename = shift;
my $openner = _detect_type($filename);
&$openner($filename);
while (my $line = ) {
... # do stuff with lines
}
}
sub _detect_type {...}
sub _open_zipped {...}
sub _open_unzipped {...}
1;
####
use Test::More qw(no_plan);
use Import qw(:TEST);
...
is($test1, $result1);
is($test2, $result2);
...
####
is(_detect_type('unzipped.txt'), \&open_unzipped);
is(_detect_type('zipped.zip'), \&open_zipped);