I have inherited some code that appends datestamps to file names. It is generating different results in perl 5.8.8 and perl 5.10.1 and I need some help trying to understand why.
Here's a snippet that shows the behavior:Here's the output running perl 5.8.8:#!/usr/bin/perl my @tm=localtime(time); $year=@tm[5]+1900; $mon=@tm[4]+1; $dom=@tm[3]; if ($dom<10) { $dom="0$dom"; } $dow=@tm[6]; $dstamp=sprintf("%04.0d%02.0d%02.0d",$year,$mon,$dom); $hour=@tm[2]; $min=@tm[1]; $sec=@tm[0]; if ($hour<10) { $hour="0$hour"; } if ($min<10) { $min="0$min"; } if ($sec<10) { $sec="0$sec"; } $dstime=$tm[8]; # is it currently daylight savings time. $tstamp=sprintf("%02.0d%02.0d%02.0d",$hour,$min,$sec); print "year is $year\n"; print "mon is $mon\n"; print "dom is $dom\n"; print "hour is $hour\n"; print "min is $min\n"; print "sec is $sec\n"; print "tstamp is $tstamp\n"; print "dstamp is $dstamp\n";
And perl 5.10.1year is 2014 mon is 4 dom is 11 hour is 16 min is 18 sec is 06 tstamp is 161806 dstamp is 20140411
The perl 5.10.1 output is putting spaces instead of zeros when the individual components of the timestamp are less than ten (like with the seconds field of the tstamp value).year is 2014 mon is 4 dom is 11 hour is 16 min is 20 sec is 08 tstamp is 1620 8 dstamp is 2014 411
Due to legacy systems, this code needs to continue to run on both versions of perl.
Any help understanding what caused the output to change or how to get the same output from both perl versions would be appreciated.
Thank you,
Tim
In reply to output format changed perl5.8 --> perl 5.10? by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |