Alvis-Convert
view release on metacpan or search on metacpan
lib/Alvis/Utils.pm view on Meta::CPAN
package Alvis::Utils;
require Exporter;
use strict;
use open ':utf8';
use File::Find;
use Cwd 'abs_path';
use Carp;
our @ISA = qw(Exporter);
#our @EXPORT = qw(open_file get_files);
our @EXPORT_OK = qw( open_file get_files absolutize_path );
our $VERSION = 0.01;
#############################################################################
# Opens file and returns its filehandle.
#
# open_file('my_file');
# open_file('file' =>'my_file', 'die' => '0', 'msg' => 'message');
#
# Returns undef if file openning fails and 'die' => '0'
#
sub open_file
{
my %param = ('die' => 1);
if (!defined($_[1])) {
$param{'file'} = shift;
} else {
my %x = @_;
%param = map {$_ => $x{$_}} keys %x;
}
my $filename = $param{'file'};
croak "Filename to open is not defined" if (!defined($param{'file'}));
$param{'msg'} = "Cannot open file '$filename'"
if (!defined($param{'msg'}));
my $is_failed = 0;
local *FH;
if ($filename =~ /\.bz2$/) {
open(FH, "bzcat $filename |")
or _open_file_failed(\$is_failed, %param);
} elsif ($filename =~ /\.gz$/) {
open(FH, "zcat $filename |")
or _open_file_failed(\$is_failed, %param);
} else {
open(FH, $filename) or _open_file_failed(\$is_failed, %param);
}
return ($is_failed ? undef: *FH);
}
############################################################################
sub _open_file_failed
{
my $is_failed = shift;
my %param = @_;
croak "$param{'msg'}: $!" if ($param{'die'});
$$is_failed = 1;
}
( run in 1.132 second using v1.01-cache-2.11-cpan-140bd7fdf52 )