Weird. My alarm(2) takes 14 seconds? Is DBD::Informix or something else overriding my $SIG{ALRM}?
If I substitute the connect() call with a sleep 10, then my alarm(2) takes 2 seconds, as I expected. :) Thanks, j $ cat j.t use strict; use DBI; my $dbh; eval { local $SIG{ALRM} = sub { die "timeout\n" }; alarm(2); # seconds before time out $dbh = DBI->connect('dbi:Informix:[EMAIL PROTECTED]'); alarm(0); # cancel alarm (if connect worked fast) }; alarm(0); # cancel alarm (if eval failed) chomp $@; print "[EMAIL PROTECTED]::err][$DBI::errstr]\n"; $ time perl j.t [timeout][-931][SQL: -931: Cannot locate drprod_tcp service/tcp service in /etc/services.] real 0m14.320s user 0m0.319s sys 0m0.044s $ perl -MDBI -e 'DBI->installed_versions' Perl : 5.008004 (i686-linux) OS : linux (2.6.4-52-smp) DBI : 1.46 DBD::Sybase : 1.04 DBD::Sponge : 11.10 DBD::Proxy : install_driver(Proxy) failed: Can't locate RPC/PlClient.pm in @INC DBD::Informix : 2003.04 DBD::File : 0.31 DBD::ExampleP : 11.12 DBD::DBM : 0.02