$td_switch=0; open(DAT, $data_file)|| die("Could not open file!"); while (){ if ($td_switch){ if (m/.*?<\/td>.*$/i){ ($extract_rest, $_) = /(.*?)<\/td>(.*)$/i; $td_switch = 0; $extract .= "\n" . $extract_rest; push (@parsed_data, $extract); #print "$_\n\n"; }else{ ($extract_rest) = /(.*?)$/i; $extract .= "\n" . $extract_rest; } } while (m/.*?<\/td>/i){ ($extract, $_) = /.*?(.*?)<\/td>(.*)$/i; push (@parsed_data, $extract); #print "$_\n\n"; } if (m//i){ ($extract) = /.*(.*)$/i; $_ = ""; $td_switch = 1; #print "$_\n\n"; } } close(DAT);