http://qs321.pair.com?node_id=566896


in reply to Variable/multiple matches using grep

I do not recommend using regular expressions to parse a CSV. What happens if part of the input includes a comma? In the Massive Overkill department, I would suggest using DBD::CSV:

use DBI; $dbh = DBI->connect("DBI:CSV:") or die "Cannot connect: " . $DBI::errstr; $dbh->{'csv_tables'}->{'data'} = { 'file' => 'data.csv'}; # Find the matching rows in the table $sth = $dbh->prepare('SELECT * FROM data ' . 'WHERE column1 = ? AND column2 = ? ' . 'AND column7 = ? AND column5 = ?', $one, $two, $three, $four) or die "Cannot prepare: " . $dbh->errstr(); $sth->execute() or die "Cannot execute: " . $sth->errstr(); my($id, $name); $sth->bind_columns(undef, \$id, \$name); while ($sth->fetch) { # Print the name and id of each matching row printf("Found result row: id = %s, name = %s\n", defined($id) ? $id : "NULL", defined($name) ? $name : "NULL"); } $sth->finish(); $dbh->disconnect();

The intelligent reader will judge for himself. Without examining the facts fully and fairly, there is no way of knowing whether vox populi is really vox dei, or merely vox asinorum. — Cyrus H. Gordon