Showing posts with label Perl. Show all posts
Showing posts with label Perl. Show all posts

Apr 12, 2011

File write or append based on condition

use autodie;
use File::Copy 'copy';
my $append = ...; # If true append, else overwrite.
open my $fh, $append ? ">>" : ">", LOG;
copy "tmp", $fh;

Or:
my $append = ...; # If true append, else overwrite.
system "cat tmp " . ($append ? ">>" : ">") . " LOG" and die;

Nov 25, 2009

Getting Date - Adding and Subtracting


use DateTime;


my $dt1 = DateTime-> new (
year =>'1998',
month =>'4',
day =>'4',
hour =>'21',
time_zone =>'local'
);

my $Tomorrow = $dt1->add( days => 1 )

my $Yesterday = $dt1->subtract( days => 1 );

* You can also change date time by hour or seconds.

Jun 12, 2009

Calculate the time difference (inline)

Usage: $timeDiffStr = &timeDiff( date1 => '2004-04-28 15:36', date2 => $iso_now );
my ($y, $m, $d, $hh, $mm, $ss) = (localtime)[5,4,3,2,1,0];
$y += 1900; $m++;
my $iso_now = sprintf("%d-%02d-%02d %02d:%02d:%02d", $y, $m, $d, $hh, $mm, $ss);

my $timeDiffStr = &timeDiff( date1 => $sale_time, date2 => $iso_now );

sub timeDiff (%) {
my %args = @_;

my @offset_days = qw(0 31 59 90 120 151 181 212 243 273 304 334);

my $year1 = substr($args{'date1'}, 0, 4);
my $month1 = substr($args{'date1'}, 5, 2);
my $day1 = substr($args{'date1'}, 8, 2);
my $hh1 = substr($args{'date1'},11, 2) || 0;
my $mm1 = substr($args{'date1'},14, 2) || 0;
my $ss1 = substr($args{'date1'},17, 2) if (length($args{'date1'}) > 16);
$ss1 ||= 0;

my $year2 = substr($args{'date2'}, 0, 4);
my $month2 = substr($args{'date2'}, 5, 2);
my $day2 = substr($args{'date2'}, 8, 2);
my $hh2 = substr($args{'date2'},11, 2) || 0;
my $mm2 = substr($args{'date2'},14, 2) || 0;
my $ss2 = substr($args{'date2'},17, 2) if (length($args{'date2'}) > 16);
$ss2 ||= 0;

my $total_days1 = $offset_days[$month1 - 1] + $day1 + 365 * $year1;
my $total_days2 = $offset_days[$month2 - 1] + $day2 + 365 * $year2;
my $days_diff = $total_days2 - $total_days1;

my $seconds1 = $total_days1 * 86400 + $hh1 * 3600 + $mm1 * 60 + $ss1;
my $seconds2 = $total_days2 * 86400 + $hh2 * 3600 + $mm2 * 60 + $ss2;

my $ssDiff = $seconds2 - $seconds1;

my $dd = int($ssDiff / 86400);
my $hh = int($ssDiff / 3600) - $dd * 24;
my $mm = int($ssDiff / 60) - $dd * 1440 - $hh * 60;
my $ss = int($ssDiff / 1) - $dd * 86400 - $hh * 3600 - $mm * 60;

"$dd Tage $hh Std. $mm Min.";
}

Time difference calculation


my $difference = $nowTime - $fileTime;


my $seconds = $difference % 60;
$difference = ($difference - $seconds) / 60;
my $minutes = $difference % 60;
$difference = ($difference - $minutes) / 60;
my $hours = $difference % 24;
$difference = ($difference - $hours) / 24;
my $days = $difference % 7;
my $weeks = ($difference - $days) / 7;

print "$weeks\t$days\t$hours\t$minutes\t$seconds\n";

Simple Date Calculation


use POSIX qw(strftime);

$dateStr = strftime "%Y-%m-%d", localtime(time - 48 * 60 * 60);

my $epochYesterday = time - 24 * 60 * 60;

# subtract secs in day from current epoch time

my ($year, $month, $day) = (localtime($epochYesterday))[5,4,3];
$year += 1900;
$month++;

Aug 30, 2008

Explode String Delimited by space


$totalsUC[$i] =~ /(.*?)\s(.*)/;

push(my @tmpData, ($1, $2));