use DBI; my $dbh = 0; sub connect_db { if (defined $dbh) { eval { $dbh->ping; }; if (!$@) { #success return preserver database handle return $dbh; } } #ok, create a new database handle my $retry_count = 5; while ((!$dbh) && ($retry_count > 0)) { $dbh = DBI->connect('dbi:Oracle:linuxdb3','scott', 'tiger'); $retry_count -= 1; sleep(1); } if (!$dbh) { # Database connection failed return 0; } # Database connection OK return $dbh; } sub disconnect_db { if (defined $dbh) { eval { $dbh->ping; }; if ($@) { # Database handle invalid as ping failed return 0; } } # Disconnect Database connection $dbh->disconnect; return 1; }