Я бы сделал так:
#!d:/perl/bin/perl
use CGI ;
$query = new CGI;
$id = $query->param(\'id\');
open (FILE, "$id\\.txt");
@db=;
close (FILE);
$url="";
foreach (@db){
  ($tmp1,$tmp2,$tmp3,$end)=stlit (/\\|/,$_);
  if ($tmp1 ne $tmp2){
    $url= tmp3;
    $tmp2 += 1;
    $_=$tmp1."|".$tmp2."|".$tmp3."|end\\n";
  }
}
if ($url eq ""){
open (FILE, ">$id\\.txt");
  $db1=;
close (FILE);
  ($tmp1,$tmp2,$tmp3,$end)=stlit (/\\|/,$db1);
  $url=$tmp3;
  foreach (@db){
    ($tmp1,$tmp2,$tmp3,$end)=stlit (/\\|/,$_);
    $tmp2 = 0;
    $_=$tmp1."|".$tmp2."|".$tmp3."|end\\n";
  }
}
open (FILE, ">$id\\.txt");
  print FILE @db;
close (FILE);
print "Locate: $url\\n\\n";
#########################
ссылка - blablabla.cgi?id=имя файла
Должны быть файлы следующего вида:
"Сколько раз кликать по ссылке - 1"|0|URL - 1 куда направляется|end
"Сколько раз кликать по ссылке - 2"|0|URL - 2 куда направляется|end
По идее должно работать...