Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re: Renaming an image file

by mjscott2702 (Pilgrim)
on Nov 28, 2010 at 10:17 UTC ( #874090=note: print w/replies, xml ) Need Help??

in reply to Renaming an image file

Why not avoid all the potential (though unlikely) issues of non-unique pseudo-random numbers and hash collisions - just 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.

Replies are listed 'Best First'.
Re^2: Renaming an image file
by afoken (Monsignor) on Nov 28, 2010 at 12:14 UTC
    ... 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.


    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
      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"; }


      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.

      easy to fix :)
      $^T . rand($^T) . $$ $^T . int( rand($^T) ) . $$
      heck you could even append
      crypt $^T.$$.$^T, rand($^T)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://874090]
[Corion]: Cool. Google makes it easier for me to wean myself off Google Keep. The app now insists on saving items online before displaying them in the offline view.
[Corion]: I should maybe set up a "public" instance of my clone just to manage feature suggestions ;)

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (12)
As of 2017-04-25 11:50 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (450 votes). Check out past polls.