#!/usr/bin/perl # # gets rid of trailing white spaces in CSV records # William Riley wriley@scottrade.com # use strict; use warnings; use Text::CSV; use Time::HiRes; defined($ARGV[0]) or die "Please supply an input CSV file as first argument."; defined($ARGV[1]) or die "Please supply an output CSV file as second argument."; my $infile = $ARGV[0]; my $outfile = $ARGV[1]; my $csv = Text::CSV->new(); my $linenum = 0; my $t0 = Time::HiRes::gettimeofday(); my $elapsed; open (CSVIN, "<", $infile) or die $!; open (CSVOUT, ">", $outfile) or die $!; while () { ++$linenum; if ($csv->parse($_)) { my @columns = $csv->fields(); for(my $i = 0; $i < $#columns;$i++) { $columns[$i] =~ s/\s+$//; } $csv->combine(@columns); my $line = $csv->string(); print CSVOUT $line . "\n"; } else { my $err = $csv->error_input; print "Failed to parse line: $err"; } } $elapsed = Time::HiRes::gettimeofday() - $t0; close CSVIN; close CSVOUT; printf("Parsed %d lines in %.03f seconds\n",$linenum,$elapsed);