## Louis ecrire:
## > It would be interesting to assess each scheme
## > in terms of resource requirements
## > (running time and memory).
## You are write, and hashes should not
## be bigger than "medium size" ;-)
## at least MacPerl hashes.
###########################################
## You can put one complete URL into one hash record:
print "\n\n======= Test per pedes: ======\n";
$H{'64.207.97.183'}{ng}{gov}{nigeria}{www}{is_read}=1;
#$H{'64.207.97.183'}{ng}{gov}{nigeria}{is_read}=1;
## The following might be slimmer?
$H{'64.207.97.183'}{"nigeria.gov.ng"}{is_read}=1;
$H{'64.207.97.183'}{"www.nigeria.gov.ng"}{is_read}=1;
## Then you can test:
print "nigeria.gov.ng\n" if exists
$H{'64.207.97.183'}{ng}{gov}{nigeria}{is_read};
print "www.nigeria.gov.ng\n" if exists
$H{'64.207.97.183'}{ng}{gov}{nigeria}{www}{is_read};
print "WWW.NIGERIA.GOV.NG\n" if exists
$H{'64.207.97.183'}{"www.nigeria.gov.ng"}{is_read};
print "NIGERIA.GOV.NG\n" if exists
$H{'64.207.97.183'}{"nigeria.gov.ng"}{is_read};
## Or test with this:
print "\n\n======= Test with showHash: ======\n";
showHash(\%H);
sub showHash {
$indent++;
my %H = %{$H=shift};
for $Hk(keys %H) {
$Hv = $H{$Hk};
if (ref($Hv)) {
print "--"x($indent-1), "$Hk\n" ;
showHash($Hv); }
else {
print ".."x($indent-1), "$Hk => " . $H{$Hk} ."\n" ;
} }
$indent--;
}
## Probably the choice what hash scheme to use
## will depend on what kind of tests you wish to
## have afterwards.
## Au revoir,
## Detlef
=This will output:
======= Test per pedes: ======
www.nigeria.gov.ng
WWW.NIGERIA.GOV.NG
NIGERIA.GOV.NG
======= Test with showHash: ======
64.207.97.183
--ng
----gov
------nigeria
--------www
- - - - - is_read => 1
--www.nigeria.gov.ng
- - is_read => 1
--nigeria.gov.ng
- - is_read => 1