Acme-SList-Utilities
view release on metacpan or search on metacpan
lib/Acme/SList/Utilities.pm view on Meta::CPAN
package Acme::SList::Utilities;
$Acme::SList::Utilities::VERSION = '0.04';
use strict;
use warnings;
use File::Copy;
use File::Slurp;
require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw();
our @EXPORT_OK = qw(crdir sdate sduration commify target dircopy);
sub crdir {
my ($path) = @_;
my $dir = '';
for my $elem (split m{[/\\]}xms, $path) {
if ($elem =~ m{\A \s* \z}xms) {
$! = 33; # Domain error
return;
}
$dir .= $elem.'/';
if ($elem ne '..' and !-d $dir) {
mkdir $dir or return;
}
}
return 1;
}
sub dircopy {
my ($from, $to) = @_;
$from =~ s{/+ \z}''xms;
$to =~ s{/+ \z}''xms;
for my $file (read_dir $from) {
copy "$from/$file", "$to/$file" or return;
}
return 1;
}
sub sdate {
my ($stamp) = @_;
my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday) = localtime $stamp;
return sprintf("%02d/%02d/%04d %02d:%02d:%02d",
$mday, $mon + 1, $year + 1900, $hour, $min, $sec);
}
sub sduration { # calculate a duration ($_[0]...$_[1])
my ($from, $to) = @_;
my $tsec = $to - $from; my $sec = $tsec % 60;
my $tmin = int($tsec / 60); my $min = $tmin % 60;
my $thour = int($tmin / 60); my $hour = $thour;
my $dur = "$sec sec";
$dur = "$min min ".$dur unless $min == 0;
$dur = "$hour hrs ".$dur unless $hour == 0;
return $dur;
}
sub commify {
my ($number) = @_;
1 while $number =~ s/^([-+]?\d+)(\d{3})/$1_$2/;
$number =~ s/\./,/;
return $number;
}
sub target {
my ($Program) = @_;
if (defined($ENV{'SL_Target'}) and $ENV{'SL_Target'} ne '') {
my $sl_target = lc $ENV{'SL_Target'};
if ($sl_target !~ m{\A [0-9a-z]{0,4} \z}xms) {
( run in 1.670 second using v1.01-cache-2.11-cpan-39bf76dae61 )