use FileHandle; format foo_rec = FOO @>>>>>>> $flds[3] . format dflt_rec = @<<<<<<< @>>>>>>> @>>>>> @>>>>> $flds[2] $flds[3] $flds[5] $flds[9] . while () { my @flds = split /\|/, $_; if ($flds[0] eq 'foo') { format_name FS "foo_rec"; write FS; } else { format_name FS "dflt_rec"; write FS; } }