use strict;#etc, my $parser = Text::CSV::Simple->new(); $parser->field_map(@fm); my @data = $parser->read_file($tf); my $ln = 0; open( my $cfh, '>', $cf ) || die "Can't open $cf: $!"; foreach my $row (@data) { ++$ln; if ( $ln > 1 ) { if ( my $date = ParseDate( $row->{Date} ) ) { $row->{Date} = UnixDate( $date, "%m/%d/%Y" ); } else { print "ERROR: $row->{Date} not a date!"; } foreach my $f ( keys %$row ) { if ( $f =~ m/^Spread\d\d?[my]$/ && $row->{$f} ne q{} ){ print "Fixing a percentage ($f) --now $row->{$f}"; $row->{$f} =~ s/^($RE{num}{decimal})%$/$1*100/e || die "Pattern match failed!"; print "--now $row->{$f}"; } if ( index( $row->{$f}, ',' ) != -1 ) { $row->{$f} = qq{"$row->{$f}"}; } } ## end foreach my $f ( keys %$row ) } ## end if ( $ln > 1 ) print {$cfh} join( ',', @{$row}{@fm} ); } ## end foreach my $row (@data) close $cfh || die "Can't close $cf: $!";