Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
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 (Prior) 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 wandering the Monastery: (10)
As of 2015-07-07 12:11 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (88 votes), past polls