my $sth; my $res; eval{ local $SIG{ALRM} = sub { die "db_timeout" }; alarm 12; $sth = $dbh->prepare($sql); if (! defined $sth) { print LOG "ERROR: insert prepare failed\n"; } else { $res = $sth->execute; } alarm 0; }; if ($@) { if ($@ !~ /db_timeout/) { print LOG "ERROR: Alarm during insert execute other than db_timeout: $@\n"; } else { print LOG "ERROR: db_timeout: $@\n"; } }