@files = (); sub makefile { my %vars = {}; $vars{'NAME'} = shift; $vars{'AGE'} = shift; $vars{'CONTENT'} = shift; my $filename = "$vars{'NAME'}.html"; push(@files,$filename); open INFILE, "<template.html"; open OUTFILE, ">$filename"; while ($line = <INFILE>) { $line =~ s/--(\w+)--/$vars{$1}/g; print OUTFILE $line; } close INFILE; close OUTFILE; } open DATAFILE, "<cmsdata.txt"; $state = 0; # 0 - expecting name # 1 - expecting age # 2 - expecting content open IN, "<data.txt"; while ($line = <IN>) { chomp($line); if ($line eq "###") { makefile($name,$age,$content); $content = ""; $state = 0; } else { if ($state == 0) { $name = $line; $state = 1;} elsif ($state == 1) { $age = $line; $state = 2;} elsif ($state == 2) { $content .= $line; } } } print "\n\n"; open TOC, ">index.html"; for $f (@files) { print TOC "<a href='$f'>Person</a><br />"; } close TOC; 1