Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re: Reverse Date Sorted Directory Names

by roho (Chancellor)
on Oct 28, 2009 at 19:56 UTC ( #803778=note: print w/replies, xml ) Need Help??


in reply to Reverse Date Sorted Directory Names

I'm trying to understand your use of the @sym array. Why do you build the array using "1-6" instead of all the digits "1-9", or "0-9" like you use all the letters of the alphabet "A-Z"?

"Its not how hard you work, its how much you get done."

  • Comment on Re: Reverse Date Sorted Directory Names

Replies are listed 'Best First'.
Re^2: Reverse Date Sorted Directory Names
by grantm (Parson) on Oct 28, 2009 at 21:52 UTC
    Why do you build the array using "1-6" instead of all the digits "1-9", or "0-9" like you use all the letters of the alphabet "A-Z"

    There's really nothing significant about my choice of characters. I needed a set of 32* unique characters that could be guaranteed to sort consistently. There are 26 letters of the alphabet so I needed six more. I couldn't use both uppercase and lowercase letters because file managers will often sort case insensitively. There are a limited number of punctuation characters that are safe to use in filenames so I just went for the digits 1-6.

    I could have used 0-9 and A-V, but I preferred to use fewer digits and more letters to reduce the chance of a numeric code being taken as part of the date.

    Alternatively, since there are 14 bits of significant data in the code, I could have spread it out over 4 characters rather than three. Then I'd only have needed 16 unique symbols (e.g.: A-P) to represent the 4 bit payload for each character:

    sub day_dir { my($day, $month, $year) = (localtime(shift || time))[3,4,5]; my $code = sprintf('%04X', (((138 - $year) & 31) << 9) + (((11 - $month) & 15) << 5) + ((31 - $day) & 31) ); $code =~ tr/0-9A-F/A-P/; return sprintf('%s-%04u-%02u-%02u', $code, $year + 1900, $month + +1, $day); }

    * Eagle eyed readers will note that I really only needed 31 unique symbols but I was being conservative.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (3)
As of 2020-02-19 00:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    What numbers are you going to focus on primarily in 2020?










    Results (80 votes). Check out past polls.

    Notices?