optional 'require'

Jacqui Caren jacqui.caren at ntlworld.com
Wed Dec 21 16:11:38 GMT 2005

Dirk Koopman wrote:
> For some reason (probably due to old age and lack of brain brought on by
> excess alcohol) I am having difficulty determining, in an optional
> non-stopping way, whether DBI (and at least DBD::SQLite) is installed on
> the machine.
> I have an app which traditionally has used flat files and DB_File to
> store the data that it has acquired. I want to allow seamless upgrade to
> a SQL based version. 
> Therefore I want to test for the presence of DBI and at least one true
> SQL engine. However it is vital that this test is non destructive and
> the app carries on as normal if these are not available.
> I have tried various styles of: eval { require DBI; }; and eval "require
> DBI"; so far without adequate success.

What is the problem with the require?

If you said eval { use ... } I could understand why the eval "fails".

Hint: available_drivers() method after an import.

  eval "require DBI";
  unless ($@) {
   import DBI;
   print join(" ",DBI->available_drivers())."\n";
  } else {
   print "No DBI\n";

With two local perls...

jacqui at PAULNJ sendmail]$ /usr/bin/perl b
ExampleP InterBase Sponge mysql
[jacqui at PAULNJ sendmail]$ /usr/local/p584i/bin/perl b
CSV DBM ExampleP File InterBase Pg Proxy Sponge
[jacqui at PAULNJ sendmail]$

More information about the london.pm mailing list