Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Directory Hashing Algorithm

by tadman (Prior)
on Jul 31, 2001 at 20:02 UTC ( #101203=sourcecode: print w/ replies, xml ) Need Help??

Category: Miscellaneous
Author/Contact Info tadman
Description: A simple function to distribute many files across as many directories, using an RC5 hash.
#!/usr/bin/perl -w

use strict;

# hashed - Create a hashed directory path for a given filename
#          using an RC5-hash generated by the crypt() function.

sub hashed
{
        my ($name) = @_;

        # Send the input into the grinder until it comes out the
        # right size.  It shrinks blocks of up to 12 characters
        # into only two with each pass.

        while (length($name) > 4)
        {
                my $crypt;

                foreach ($name =~ /.{1,12}/gs)
                {
                        $crypt .= substr(crypt($_,'$1$ABCDEFGH'),12,2)
+;
                }

                $name = $crypt;
        }

        # Fix unruly characters, as crypt will gleefully return
        # '/' in the hashed strings. These are converted to 'Z'
        $name =~ y!/!Z!;

        # Split the returned string into a full path, including
        # the specified filename.
        return join ('/', ($name =~ /../g), $_[0]);
}

print hashed ("thisimage.gif"),"\n";
print hashed ("thisimage.jpg"),"\n";
print hashed ("thisimage1.gif"),"\n";
print hashed ("thisimage2.gif"),"\n";

Comment on Directory Hashing Algorithm
Download Code

Back to Code Catacombs

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (9)
As of 2015-07-29 02:24 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 (260 votes), past polls