Alvis-Bags

 view release on metacpan or  search on metacpan

lib/Alvis/URLs.pm  view on Meta::CPAN

package Alvis::URLs;

$Alvis::URLs::VERSION = '0.3';

###################### CONFIGURATION #####################


############ END CONFIGURATION ######################

use Digest::MD5 qw(md5_hex);
use strict;
use POSIX;
use Encode;
use URI;

# encoding pragmas follow any includes like "use"
use encoding 'utf8';
use open ':utf8';

#  return 32-bit unsigned
sub easyhash32
{
  my $string = shift;
  Encode::_utf8_off($string);
  my $dig = md5_hex($string);
  # print $dig . " \n";
  return POSIX::strtol(substr($dig,0,8),16);
}

#  return 64-bit unsigned
sub easyhash64char
{
  my $string = shift;
  Encode::_utf8_off($string);
  my $dig = md5_hex($string);
  # print $dig . " \n";
  return substr($dig,0,16);
}

#  URL switches
$Alvis::URLs::nocase = 0;
$Alvis::URLs::noclean = 0;
$Alvis::URLs::keepfrag = 0;

sub CleanURL() {
  if ( !$_[0] ) {
	return undef;
  }
  my $uri = new URI($_[0]);
  if ( ! $Alvis::URLs::keepfrag ) {
    $uri->fragment(undef);
  }
  return $uri->canonical;
}

sub StandardURL() {
  my $inu = shift();
  if ( $Alvis::URLs::nocase ) {
    $inu = lc($inu);
  }
  if ( $Alvis::URLs::noclean == 0 ) {
    $inu = &Alvis::URLs::CleanURL($inu);
  }
  return $inu;
}


1;

__END__

=head1 NAME

Alvis::URLs - URL and hash standardisation utilities.

=head1 SYNOPSIS

 $Alvis::URLs::keepfrag = 0; # set to keep fragment, default removes
 $cleanurl = &Alvis::URLs::CleanURL($url);
 $Alvis::URLs::nocase = 0;   # set to convert everything to lowercase
 $Alvis::URLs::noclean = 0;  # set to disable use of URI cleaning
 $standardurl = &Alvis::URLs::StandardURL($url);

=head1 DESCRIPTION

Provides an MD5 hashing interface, as well as simple standards for URL cleaning
based on the URI library.

=head1 METHODS

=head2 easyhash32()

   $myhash = &easyhash32($text);



( run in 1.374 second using v1.01-cache-2.11-cpan-5837b0d9d2c )