sub open_file { my $file = shift || return; my $lock = 0; my $compress = shift; my $fh; if($compress) { use IO::Zlib; $fh = IO::Zlib->new($file, 'rb') or die "Couldn't open file: $!\n"; } else { open($fh, '<', $file) or die "Couldn't open file: $!\n"; } if($lock) { use Fcntl qw(:DEFAULT :flock); flock($fh, LOCK_SH) or die "Couldn't lock file: $!\n"; } return $fh; }