in reply to DB update query from Linux using a Hash array

I would first verify that the values being assigned to $key1 are what you think they are. If, for instance, they have spaces in them (at the beginning or end), then your UPDATE statement isn't going to work.

Another way to test this is to change your UPDATE statement into an INSERT statement (just change the WHERE to a comma.) If the INSERT statement works, that would indicate the UPDATE statement is not working because it is not satisfying the WHERE clause.

Finally, I would suggest you read up on using place-holders. They will save you a lot of trouble with constructing SQL statements. Re-written to use place-holders, your loop would become:

my $update = $ldb->prepare("UPDATE LOW_PRIORITY $ldbtable SET $mtime=? + WHERE software=?"); foreach my $key1 ( keys %prog_numbers) ) { $update->execute($prog_numbers{$key1}, $key1); }
This is also a bit more efficient as the SQL statement is only prepared once.