Hi all, Just want to know what improvement can be done with the code below if any. I am sure a lot of improvement/changes is required. I will be calling this script from a UNIX script, i.e.timediff=`timediff.pl $file`, so $file will be passed to the Perl script. It's probably a good idea to check whether the $file is passed and if so, check if the file exists or not.
Most of the print lines are just for testing/purposes. Ultimately, what am wanting to assign to the timediff variable in the UNIX script is the string "( 5 weeks, 3 days, 10:16:1 )" but only if the file is x days old. Do I need to have something like a return timediff_detail command in the Perl script? FYI, I've decided to use stat instead of Perl Date modules because each server have different Date modules installed, some have Date::Manip, some have Date::Calc etc. so using stat is the best option that I have. Any advise/help will be much appreciated. Thanks. ----- Code for timediff.pl so far ----- #!/usr/bin/perl #$today = localtime(); $today_epoch = time(); $today = localtime($today_epoch); @date_fields = split(" ",$today); $day=$date_fields[2]; $month=uc($date_fields[1]); $year=$date_fields[4]; @time_fields = split(":",$date_fields[3]); $hour=$time_fields[0]; $minute=$time_fields[1]; $second=$time_fields[2]; print "Today is ==> $today \n"; print "DAY is ==> $day ... \n"; print "MONTH is ==> $month ... \n"; print "YEAR is ==> $year ... \n"; print "HOUR is ==> $hour ... \n"; print "MINUTE is ==> $minute ... \n"; print "SECOND is ==> $second ... \n"; my ( $dev, $ino, $mode, $nlink, $uid, $gid, $rdev, $size, $atime, $mtime, $ctime, $blksize, $blocks ) = stat("x1.pl"); print "\n"; print "< ====================================== > \n"; print "Output from stat ... \n"; print " dev => $dev \n"; print " ino => $ino \n"; print " mode => $mode \n"; print " nlink => $nlink \n"; print " uid => $uid \n"; print " gid => $gid \n"; print " rdev => $rdev \n"; print " size => $size \n"; print " atime => " . localtime($atime) . " ==> \n"; print " mtime => " . localtime($mtime) . " ==> \n"; print " mtime - not localtime => " . $mtime . " ==> \n"; print " ctime => " . localtime($ctime) . " ==> \n"; print " blksize => $blksize \n"; print " blocks => $blocks \n"; print "< ====================================== > \n"; print "\n"; $difference=$today_epoch-$mtime; $seconds = $difference % 60; $difference = ($difference - $seconds) / 60; $minutes = $difference % 60; $difference = ($difference - $minutes) / 60; $hours = $difference % 24; $difference = ($difference - $hours) / 24; $days = $difference % 7; $weeks = ($difference - $days) / 7; print "Age of x1.pl is: \n"; print "( $weeks weeks, $days days, $hours:$minutes:$seconds ) \n"; print "\n"; exit 0; -------------- Sample Output: -------------- Today is ==> Fri Mar 11 02:56:22 2011 DAY is ==> 11 ... MONTH is ==> MAR ... YEAR is ==> 2011 ... HOUR is ==> 02 ... MINUTE is ==> 56 ... SECOND is ==> 22 ... < ====================================== > Output from stat ... dev => 84148225 ino => 7975633 mode => 33248 nlink => 1 uid => 103 gid => 101 rdev => 0 size => 629 atime => Fri Mar 11 01:07:26 2011 ==> mtime => Mon Jan 31 16:40:21 2011 ==> mtime - not localtime => 1296445221 ==> ctime => Thu Feb 10 19:09:46 2011 ==> blksize => 8192 blocks => 8 < ====================================== > Age of x1.pl is: ( 5 weeks, 3 days, 10:16:1 )