sorry about that here is the source code
#!/usr/bin/perl -w
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
my $headfile = 'header.txt';
my $footfile = 'footer.txt';
my $twfx_file = 'tplates.dat';
my ($uselock, @headinfo, $headline, $heading, @footinfo, $footline, $footer);
my $record = '';
my $filenumber = $ENV{'QUERY_STRING'};
# Get the heading information
unless (open (DATA,"$headfile"

) {die (&error);}
if ($uselock eq '1') {
flock DATA, 2;
seek DATA, 0, 0;
}
@headinfo = <DATA>;
if ($uselock eq '1') {
flock DATA, 8;
}
close (DATA);
foreach $headline (@headinfo){
$heading = $heading.$headline;
}
# Get the footer information
unless (open (DATA,"$footfile"

) {die (&error);}
if ($uselock eq '1') {
flock DATA, 2;
seek DATA, 0, 0;
}
@footinfo = <DATA>;
if ($uselock eq '1') {
flock DATA, 8;
}
close (DATA);
foreach $footline (@footinfo){
$footer = $footer.$footline;
}
open(TWFX_FILEHANDLE, $twfx_file) or die "Cannot open totalwebfx templates file $twfx_file";
$/ = "//\n";
while($record = <TWFX_FILEHANDLE>) {
my %line_types = get_line_types($record);
defined $line_types{'FN'} or next;
$line_types{'FN'} =~ /TEMPLATE/ or next;
my $fn = $line_types{'FN'};
$fn =~ s/^FN //;
$fn =~ s/; .*//;
my $pattern = $line_types{'NR'};
$pattern =~ s/NR //g;
my $fl = $line_types{'FL'};
$fl =~ s/FL //g;
$fl = twfx_2_regexp($fl);
my $fd = $line_types{'FD'};
$fd =~ s/FD //g;
$fd = twfx_2_regexp($fd);
my $regexp = twfx_2_regexp($pattern);
while ($filenumber =~ /$regexp/g) {
my $position = ((pos $filenumber) - length($&) +1);
print "Content-type:text/html\n\n";
print "$heading";
print "$fn<br>\n";
print "$fl<br>\n";
print "$fd<br>\n";
print "$footer";
}
}
#
# Exit the program
#
exit;
##################################################
#
# Subroutines
#
##################################################
sub twfx_2_regexp {
my($pattern) = @_;
my $regexp = $pattern;
return $regexp;
}
sub twfx_2_regexp_clever {
my($pattern) = @_;
$pattern =~ s/{/[^/g;
$pattern =~ tr/cx}()<>\-\./C.]{}^$/d;
$pattern =~ s/\[G\$\]/(G|\$)/;
return $pattern;
}
sub get_line_types {
my($record) = @_;
my %line_types_hash = ();
my @records = split(/\n/,$record);
foreach my $line (@records) {
my $line_type = substr($line,0,2);
(defined $line_types_hash{$line_type})
? ($line_types_hash{$line_type} .= $line)
: ($line_types_hash{$line_type} = $line);
}
return %line_types_hash;
};