简体   繁体   中英

How to check status of previously executed command in perl

I am completely new to Perl. I have a Perl script which check connection to a oracle database running in a container. Here is my code

#!/usr/bin/perl
use DBI;

$\="\n";

print "Connecting to DB..";


my $dbh = DBI->connect('dbi:Oracle:host=oracle;sid=ORCLCDB;port=1521', 'books_admin/MyPassword', '',{ RaiseError => 1, AutoCommit => 0 })or die print ("could not connect! $DBI::errstr \n");

Using this script I'm able to connect with oracle database. But this script doesn't give any status output to my terminal. How can i check the script is connected to database?. I know bash has $? for checking the status of previously executed cmd. Do we have something similar in Perl?

Here is what i want Output "Successfully connected to Oracle-db" when the connection is OK and failed status when script can't connect to database

Note:This code give error status to my terminal. My Perl version is v5.16.3

The documentation for the connect() method says this:

Establishes a database connection, or session, to the requested $data_source . Returns a database handle object if the connection succeeds. Use $dbh->disconnect to terminate the connection.

If the connect fails (see below), it returns undef and sets both $DBI::err and $DBI::errstr . (It does not explicitly set $! .) You should generally test the return status of connect and print $DBI::errstr if it has failed.

So your code could be as obvious as:

my $dbh = DBI->connect(...);
if ($dbh) {
  say 'Connection ok';
} else {
  die "Connection error: $DBI::errstr";
}

However, you're using RaiseError => 1 , so your program will die rather than returning undef . So if your program gets past that line, you know the connection was successful.

my $dbh = DBI->connect(...);
say 'Connection ok';

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM