Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

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";
Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: sourcecode [id://101203]
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: (4)
As of 2016-07-23 15:49 GMT
Find Nodes?
    Voting Booth?
    What is your favorite alternate name for a (specific) keyboard key?

    Results (221 votes). Check out past polls.