in reply to Re^3: CSV files: Searching, manipulating data, appending and saving.
in thread CSV files: Searching, manipulating data, appending and saving.

Try this version:

use warnings; use DBI; use File::Basename; my $dir = '.'; my $file = 'noname.csv'; my $table = (fileparse($file,'.csv'))[0]; my $cols = [qw(Username Email Posts Timestamp)]; my $sep = ','; open outFile, '>', $file; print outFile <<SampleData; Username, Email, Posts, Timestamp ed,ed\@there,11,10:23:01 bill,bill\@there,5,10:23:02 SampleData close outFile; my $dbh = DBI->connect( "DBI:CSV:f_dir=$dir;csv_eol=\n;csv_sep_char=$sep;", {RaiseError=>1},); $dbh->{csv_tables}->{$table} = { file => $file, col_names => $cols, }; my $sth = $dbh->prepare("SELECT Username, Email, Posts, Timestamp FROM + noname"); $sth->execute() or die "Cannot execute: " . $sth->errstr(); my %newPosts; while ((my $Username, my $Email, my $Posts, my $Timestamp) = $sth->fet +chrow_array ()) { next if ! defined $Timestamp; print "$Username, $Email, $Posts, $Timestamp\n"; $newPosts{$Username} = ++$Posts; } for my $Username (keys %newPosts) { my $Posts = $newPosts{$Username}; $sth = $dbh->prepare("UPDATE noname SET Posts = $Posts WHERE Usernam +e = '$Username'"); $sth->execute() or die "Cannot execute: " . $sth->errstr(); } $sth = $dbh->prepare("SELECT Username, Email, Posts, Timestamp FROM no +name"); $sth->execute() or die "Cannot execute: " . $sth->errstr(); while ((my $Username, my $Email, my $Posts, my $Timestamp) = $sth->fet +chrow_array ()) { next if ! defined $Timestamp; print "$Username, $Email, $Posts, $Timestamp\n"; } $sth->finish();

Prints:

Username, Email, Posts, Timestamp ed, ed@there, 11, 10:23:01 bill, bill@there, 5, 10:23:02 Username, Email, 1, Timestamp ed, ed@there, 12, 10:23:01 bill, bill@there, 6, 10:23:02

Perl is Huffman encoded by design.