есть вот такой скриптик корый записывает в файл ip, link, date, hostname узера котрый нажал на определенй линк. На самом деле скрипт сделан из двух:1. записывает ip,link, date. 
 2. по ip определяет hostname. 
 Теперь в первый скрипт добавляю sub hostname что бы в файл записывался и hostname. 
 проблема в том что отдельно они работают нормально а когда связываю в одном ip,link,date записывает а hostname - нет. 
 вот что получилось: 
 #!/usr/bin/perl -w 
 use Socket; 
 #use strict; 
 $UNIX = 1; 
 # If you are not running this on a UNIX platform set $UNIX = 0; instead 
 $path = "."; 
 # The system path to the log file. Leave as a "." if in the same folder 
 # as this script. 
 $datafile = "fail.txt"; 
 # The filename of the log. 
 $datestyle = "1"; 
 # Set to 1 if you want month to appear first in the date string 
 ################################# 
 # End of user editable section  # 
 ################################# 
 &read; 
 $link = $input{'link'}; 
 &read_date; 
 $ipnumber = $ENV{'REMOTE_ADDR'}; 
 my $host_name =hostname($ipnumber); 
 #################################### 
 if ((($datestyle eq "1"))) 
 { $datenow = "$day/$month/$h:$m:$s"; } 
 else {$datenow = "$day/$month";} 
 open (FI, ">>$path/$datafile"); 
 if ((($UNIX eq "1"))) { flock (FI, 2); } 
 print FI "$ipnumber   $link    $datenow  $hostname\n"; 
 if ((($UNIX eq "1"))) { flock (FI, 8); } 
 close (FI); 
 print "Location: $link\n\n"; 
 exit; 
 sub read 
 { 
 if ($ENV{'CONTENT_LENGTH'}){read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});} 
 elsif ($ENV{'QUERY_STRING'}){$buffer = $ENV{'QUERY_STRING'};} 
 if ($buffer) {@pairs = split(/&/, $buffer); 
 foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $input{$name} = $value; } } 
 } 
sub read_date 
 { 
 ($s, $m, $h, $day, $month, $year, $dw, $date, $dl) = localtime(time()); 
 $month++; 
 } 
 sub hostname 
 { 
   my (@bytes, @octets, 
   $packedaddr, 
   $raw_addr, 
   $host_name, 
   $ip 
   ); 
   if($_[0] =~ /[a-zA-Z]/g) { 
    $raw_addr = (gethostbyname($_[0]))[4]; 
    @octets = unpack("C4", $raw_addr); 
    $host_name = join(".", @octets); 
    } else { 
    @bytes = split(/\./, $_[0]); 
    $packedaddr = pack("C4",@bytes); 
    $host_name = (gethostbyaddr($packedaddr, 2))[0]; 
    } 
    return($host_name); 
    } 
 кто скажет где ошибка? 
 заранее благодарен 
 
            |