set $prev_date to an impossible value while (<>) { Get $date from line if ($prev_date ne $date) { close FILE; open FILE, "new_filename_calculated_from_$date" or die "$!\n"; } print FILE, $_; $prev_date = $date; } close FILE;