Приглашаем посетить
Есенин (sergeiesenin.lit-info.ru)

Converts an IP address to an eight-character string

############################################################################
#                                                                          #
# ip_convert()                      Version 1.0                            #
# Written by Craig Patchett         craig@patchett.com                     #
# Created 10/4/96                   Last Modified 3/26/97                  #
#                                                                          #
# Copyright 1997 Craig Patchett & Matthew Wright.  All Rights Reserved.    #
# This subroutine is part of The CGI/Perl Cookbook from John Wiley & Sons. #
# License to use this program or install it on a server (in original or    #
# modified form) is granted only to those who have purchased a copy of The #
# CGI/Perl Cookbook. (This notice must remain as part of the source code.) #
#                                                                          #
# Function:      Converts an IP address to an eight-character string or    #
#                vice-versa.                                               #
#                                                                          #
# Usage:         &ip_convert($ip); or &ip_convert($converted_string);      #
#                                                                          #
# Variables:     $ip --           String containing IP address             #
#                                 Example: '100.100.100.100'               #
#                $converted_IP -- Converted IP address                     #
#                                 Example: 'ZGRkZAAw'                      #
#                                                                          #
# Returns:       String containing eight-character encoded IP address if   #
#                    called with an IP address                             #
#                String containing an IP address if called with a          #
#                    converted IP address                                  #
#                Null string if not called with a valid parameter          #
#                                                                          #
# Uses Globals:  None                                                      #
#                                                                          #
# Files Created: None                                                      #
#                                                                          #
############################################################################


sub ip_convert {

    local($ip) = $_[0];
    
    # Make sure that $ip contains an IP address
    
    if ($ip =~ /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/) {
    
        # Convert $ip into four-byte string
        
        $ip = pack("C4", split(/\./, $ip));
        
        # Convert string into uuencoded then to base64
        
        $ip = substr(pack("u", $ip), 1);
        chop($ip);
        $ip =~ tr| -_`|A-Za-z0-9+_A|;

        return($ip);
    }
    elsif (length($ip) == 8)  {
    	       
        # Convert string into uuencoded format
        
        $ip =~ tr|A-Za-z0-9+_| -_|;
        $ip = '$' . $ip;
        $ip = unpack("u", $ip);
        $ip = join('.', unpack("C4", $ip)); 

        return($ip);
    }
    else { return('') }
}

1;