http://qs321.pair.com?node_id=128135


in reply to File Rename

@tm = localtime; $mytime = sprintf("%d%02d%02d%02d%02d%02d", $tm[5]+1900, $tm[4]+1, $tm +[3], $tm[2], $tm[1], $tm[0]) rename ($filea, "$filea$mytime") || die "Couldn't rename file: $!";
will work. If you want just the first couple of letters, use
@tm = localtime; $mytime = sprintf("%d%02d%02d%02d%02d%02d", $tm[5]+1900, $tm[4]+1, $tm +[3], $tm[2], $tm[1], $tm[0]) rename ($filea, substr($filea,0,3).$mytime) || die "Couldn't rename fi +le: $!";
Here is how this works. If you call localtime with an array, the array is filed with the date and time. Element five of the array is the year, four is the month, three is the day, two the hour, one the minute, and zero the seconds. You need to add 1900 to the year, or if you want a two digit year, you need to subtract 100 (if the year is 20xx). The month you need to add 1 to (it's made to easly reference an array). The sprintf formats the string. The rename renames a file. The substr command extracts a part of a string (in this case the first three letters). Finaly, the '.' operator concatenats two strings.