Perl: Data from delimited file


#!/usr/bin/perl



		$temp = $ENV{'QUERY_STRING'};



  @pairs=split(/&/,$temp);
  foreach $item(@pairs)
   {
    ($key,$content)=split(/=/,$item,2);
    $content=~tr/+/ /;
    $content=~s/%(..)/pack("c",hex($1))/ge;
    $content=~s/\t/ /g;
    $fields{$key}=$content;
			}


$database = "database.txt";



if ($fields{'a'} =~ /^log$/){
print "Content-type: text/html\n\n";
open (DATA, "<$database") || print "No database file: $!";
flock (DATA, 2);
@lines = ;
flock (DATA, 8);
close (DATA);
foreach $line (@lines){
($ID,$URL,$name,$hits) = split(/\|\|/, $line);
print "$name..........................$hits
\n"; } exit; } elsif ($fields{'a'} !~ /[500-507]/){ print "Content-type: text/html\n\n"; print "Sorry, out of range, don't fiddle with the URL!

Access denied!"; exit; } open (DATA, "<$database") || print "No database file: $!"; flock (DATA, 2); @lines = ; flock (DATA, 8); close (DATA); foreach $line (@lines) { ($ID,$URL,$name,$hits) = split(/\|\|/, $line); if ($fields{'a'} eq $ID) { print "Location: $URL\n\n"; } } open (DATAT, ">$database") || print "No database file: $!"; flock (DATAT, 2); foreach $line (@lines) { ($ID,$URL,$name,$hits) = split(/\|\|/, $line); #if ($fields{'ID'} =~ /^$ID/) if ($fields{'a'} =~ /$ID/) { $hits++; print DATAT ("$ID||$URL||$name||$hits\n"); } else { #print DATAT $line . "\n"; print DATAT $line; } } flock (DATAT, 8); close (DATAT); exit;

click here to add a comment