### filehandle = openfile( filename ) sub openfile { my $filename = shift; if ( $filename =~ m{\.bz2\z} ) { open my $fh, '-|', "bzcat $filename" or die "bzcat $filename: $!\n"; } elsif ( $filename =~ m{\.gz\z} ) { open my $fh, '-|', "zcat $filename" or die "zcat $filename: $!\n"; } else { open my $fh, '<', $filename or die "open $filename: $!\n"; } return $fh; }