foreach (<>) { my ($item_id, $upc) = split(",",$_); my $status = upsert($dbh, $table, $item_id, $upc); print "Item #: $item_id, UPC: $upc, Status: $status\n"; } sub upsert { my ($rows, $rows2, $status); my $true = "0E0"; my ($dbh, $table, $item_id, $upc) = @_; my $sth = $dbh->prepare("UPDATE $table SET upc=? WHERE item_id=?;") or die $dbh->errstr; my $sth2 = $dbh->prepare("INSERT INTO $table (item_id, upc) VALUES(?, ?);") or die $dbh->errstr; $sth->execute($upc, $item_id); $rows = $sth->rows; ($rows == 0) ? $true : $rows; # from DBI pod (using variable instead of "0E0") print "rows is $rows\n" if ($DEBUG); if ($rows < 1) { print "Didn't update so trying to insert...\n" if ($DEBUG); $sth2->execute($item_id, $upc); $rows = $sth2->rows; ($rows == 0) ? $true : $rows; print "rows is $rows\n" if ($DEBUG); if ($rows < 1) { print "Didn't insert so giving up...\n" if ($DEBUG); }else{ $status = "Inserted"; } }else{ $status = "Updated"; } return $status; }