#!/usr/bin/perl use strict; use warnings; select STDERR; $| = 1; select STDOUT; $| = 1; my $server = 'remote server'; my $timeout = 3; my $retries = 3; my $retry = 1; my $con = 0; # connection object my $err; # error message while (not $con and not $err and $retry <= $retries) { print "starting block...\n"; eval { print "eval'ing\n"; local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required alarm $timeout; # make connection to server sleep $timeout + 1; # fake # if we reached here, the connection was successful alarm 0; }; if ($@) { if ($@ eq "alarm\n") { # timed out print "Timed out $retry time(s) connecting to $server\n"; } else { print "died unexpectedly\n"; $err = $@; $err =~ s' at /[\w\./]+\.pm line \d+$'' if $err; } } else { print "No problem!!!\n"; $con = 1; } $retry++; } print "ERROR: $err\n" if $err; print "finished. connection = '$con'\n";
A piggy bank of commands, fixes, succinct reviews, some mini articles and technical opinions from a (mostly) Perl developer.