Reputation: 341
I have written a sample Perl program to delete data from a database table.
This is the code I have written,
use DBI;
my $dbh = DBI->connect("DBI:Pg:host=192.168.12.23;port=5432;", "adhi");
if ( $dbh ) {
print "Connected successfully\n";
my $exe = $dbh->prepare("delete from perl_test.test");
my $res = $exe->execute();
if ( $res ) {
print "deleted the table successfully of rows: $res\n";
}
}
If I have executed the above it should print successful message and then the number of rows deleted.
If the table was empty it was printing 0E0
instead of 0
.
I don't know how it is returning the value like this?
Can someone please explain me how it was working?
Upvotes: 5
Views: 2875
Reputation: 793
It is done in this way to allow to test whether the operation was successful. The reason is that '0E0'
(as a string) is a true value, but 0
is a false value in Perl. Therefore:
you can test the return value in if
to determine whether the operation was successful (true means success),
but you can also use the return value as a number to know the exact number of deleted rows, since 0E0 evaluates to 0 when used as a number.
If you need just the number of deleted rows, you can use $res + 0
or $res * 1
. But only after you have tested that the operation was successful.
Upvotes: 11