in reply to Re: Renaming an image file
in thread Renaming an image file

... use the start time of the script ($^T) as a base index, and increment from there. And if you restart the script, it won't collide with any names from before

How much would you like to bet on that idea?

$^T has second resolution. Start the script at some point T in time. $filename=T at start of script. Process 100 files in 60 seconds, with $filename++ for each file. $filename=T+100 at end of script. Start again for the next set of files at T+65 seconds. First $filename=$^T=T+65. Instant collision.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)

Replies are listed 'Best First'.
Re^3: Renaming an image file
by mjscott2702 (Pilgrim) on Nov 28, 2010 at 13:49 UTC
    OK, flaw in my logic there - which you could have simply pointed out without the challenge to a bet. Hope you feel superior now.

    The point of my original post is that there may be a sufficiently simple way of doing it, without resorting to databases or with the caveats associated with random numbers and hashing.

    Maybe the Time::HiRes module would be an option - microsecond resolution, if available, should be enough:

    use strict; use warnings; use Time::HiRes qw(gettimeofday); my($seconds, $microseconds); my $index; for (1..10) { ($seconds, $microseconds) = gettimeofday; $index = sprintf("%d%06d", $seconds, $microseconds); print "$index\n"; }

    Output:

    1290951829553400 1290951829553437 1290951829553448 1290951829553457 1290951829553467 1290951829553477 1290951829553487 1290951829553496 1290951829553505 1290951829553515

      And what happens if the site where these images are being uploaded is, or becomes, a FaceBook or Flickr?

      Or any site that has multiple upload servers; and/or uses threaded servers.

      Now any scheme that tries to use upload time--even to the microsecond; and with or without combination with current pid--is almost guaranteed to create duplicates.

        Fair and valid point - but much bigger context than OP had asked for. For such situations, probably a (multi-threaded) database solution would be the robust way to go. But probably overkill for a local, one-off solution.
Re^3: Renaming an image file
by Anonymous Monk on Nov 28, 2010 at 13:20 UTC
    easy to fix :)
    $^T . rand($^T) . $$ $^T . int( rand($^T) ) . $$
    heck you could even append
    crypt $^T.$$.$^T, rand($^T)