#!/usr/bin/env perl use 5.010; use strict; use warnings; use autodie; local $\ = chr 30; open my $csv_fh, '<', 'pm_1080161_input.csv'; open my $tff_fh, '>', 'pm_1080161_output.tff'; my $re = qr{ " (? [^"]* ) " | (? [^,]* ) }x; print $tff_fh $_ for map { chomp; s/$re,/$+{field}\037/g; $_ } <$csv_fh>;