Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine
 
PerlMonks  

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.


Comment on Re: Renaming an image file
Re^2: Renaming an image file
by afoken (Parson) 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.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
      easy to fix :)
      $^T . rand($^T) . $$ $^T . int( rand($^T) ) . $$
      heck you could even append
      crypt $^T.$$.$^T, rand($^T)
      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.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://874090]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (7)
As of 2014-12-27 04:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (176 votes), past polls