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 contemplating the Monastery: (13)
As of 2014-10-02 14:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    What is your favourite meta-syntactic variable name?














    Results (61 votes), past polls