in reply to Add timestamp to file being copied.

or, TIMTOWTDI...

#!/usr/bin/perl use warnings; use strict; #769688 my ($sec, $min, $hr); # easier on your fingers; fewer "my"s.. +. ($sec,$min,$hr) = localtime(time); if ( $sec =~ /(\d{1})/ ) { # deal with times ending w/0..9 seconds $sec = "0" . $1; } my $file = 'filename.zip'; #if you need to act upon a list of files +, loop my @filenamearray = split(/\./, $file); my $newfilename = "$filenamearray[0]" . "-" . $hr . ":" . $min . ":" . + $sec . "\." . $filenamearray[1]; print $newfilename . "\n"; #now upload $newfilename...

Output of repeated execution appears to meet your spec.

filename-19:50:00.zip filename-19:50:04.zip filename-19:50:07.zip filename-19:50:09.zip filename-19:50:10.zip filename-19:50:11.zip

Replies are listed 'Best First'.
Re^2: Add timestamp to file being copied.
by almut (Canon) on Jun 09, 2009 at 03:08 UTC
    my $newfilename = "$filenamearray[0]" . "-" . $hr . ":" . $min . ":" . + $sec . "\." . $filenamearray[1];

    In such cases, I personally prefer interpolation over concatenation:

    my $newfilename = "$filenamearray[0]-$hr:$min:$sec.$filenamearray[1]";

    Appears less cluttered to my eyes (YMMV).  As there's nothing special about either '-', '.' or (single) ':' in double quoted strings, and they can't be part of variable names, you can write them just as is.

    Or maybe use sprintf() to get regular zero-padded 2-digit format:

    my $newfilename = sprintf "%s-%02d:%02d:%02d.%s", $filenamearray[0], $ +hr,$min,$sec, $filenamearray[1];
      Hello all, Thanks for suggestions. Let me give it a try and see.
        Hello, Thanks for the help. I decided to go with the for loop way as it seems to work nicely. I made some changes as the time was a bit confusing however date seem to be a bit better on the eye's. I just relized that I also need to deal with .zip.meta files aswell. How could I change this so, if it's .zip then it renames it or if it's .zip.meta that it also renames the files to the time stamp aswell?
        foreach my $upload (@uploads) { my $newName = $upload; $newName =~ s/\.zip$/-${mday}-${mon}-${year}.zip/; copy ($logSite . ${upload}, $localCpPath . $newName)or die "F +ailed to copy"; print "File $upload has been copied over and renamed $newName +\n"; $count++ }