my @files; my $line; my $file; while (<*.txt>) { next if $_ eq 'out.txt'; $file = $_; open (FILE, "$file"); my $line_number = 0; my $run; LINE: while (){ my $line = $_; $line_number = $line_number +1; $run = 1; if ($line_number == 1){ $run = 1 if $line !~ m/^Table\s/; # The function of this line was eliminated in order to allow the first line to be blanks. ie now all text files are run last LINE; } else { $run = 1; } last LINE; } if ($run == 1){ push (@files, $file); } else { #Do nothing } } print "@files"; my $line_B; my $FH; my $batch; my @age; my @number_of_males; my @number_of_females; my $out = "out.txt"; open (OUT, "+>$out"); my $year; foreach my $filename ( @files ) { if ($filename =~ /^(\d{4})/){ $year = $1; } open ( FILE, "<", $filename ) or die( "Couldn't open $filename: $!" ); my $batch = "\n"; INNER: while (()) { s/^$//; s/\d{1,3}-\d{1,3}\b.{1,300}$//; s/Under\b.{1,500}//; s/revised in light of the results of the 2001 Census1//; s/England\band\bWales//; s/Thousands//; s/Age\bPersons\bMales\bFemales\bPersons\bMales\bFemales//; s/^\D.*$//; s/(A-Z|a-z)//; s/^\D.*$//; s/These//; s/\sare//; s/\sfinal//; s/\srevised//; s/\sestimates.//; s/\sThey//; s/\sreplace//; s/\sthe//; s/\sinterim//; s/\srevised//; s/\spopulation//; s/\sestimates//; s/\sthat//; s/\swere//; s/\spublished//; s/\son//; s/\s10//; s/\sOctober\s2002\sat\snational\slevel\sfor\sEngland\sand\sWales\.//; s/and\sover//; s/Table\b3\bMid\-\d\d\d\d\bPopulation\bEstimates\:\bEngland\band\bWales;\bsingle\byear\bof\bage\band\bsex\;\bestimated\bresident\bpopulation\,//; s/revised\bin\blight\bof\bthe\bresults\bof\bthe\b2001\bCensus1//; s/Thousands//; s/Age\bPersons\bMales\bFemales\bPersons\bMales\bFemales//; s/^$//; s/(\d{1,4}\.\d)(\d\.\d{1,4})/$1\t$2/; s/^1\s*$//; s/65\/60.*//; if ($_ =~ /([\d|\.]*)\t([\d|\.]*)\t([\d|\.]*)\t([\d|\.]*)\t([\d|\.]*)\t([\d|\.]*)\t([\d|\.]*)\t([\d|\.]*)\t([\d|\.]*)/){ # I think that the main problem is here push (@age, $1); push (@number_of_males, $3); push (@number_of_females, $4); push (@age, $6); push (@number_of_males, $8); push (@number_of_females, $9); } $batch .= $_; last INNER if eof; ##|| m/^\s*go\s*$/i; } print "\n@age\n\n"; print "\n@number_of_males\n\n"; print "\n@number_of_females\n\n"; my $counter; for($counter = 0; $counter <= @age; $counter++) { if ($age[$counter]) { print OUT $year."\t"; print OUT $age[$counter]; print OUT "\t1\t"; print OUT $number_of_males[$counter]; print OUT "\n"; print OUT $year."\t"; print OUT $age[$counter]; print OUT "\t2\t"; print OUT $number_of_females[$counter]; print OUT "\n"; } } undef(@age); undef(@number_of_males); undef(@number_of_females); print $batch; sleep 2; }