4e7c3aa6dff899ee4d9ad2aeeedf1fe468aec79c
[DBIx-DBSchema.git] / DBSchema / _util.pm
1 # internal utility subroutines used by multiple classes
2
3 package DBIx::DBSchema::_util;
4
5 use strict;
6 use vars qw(@ISA @EXPORT_OK);
7 use Exporter;
8 use Carp qw(confess);
9
10 @ISA = qw(Exporter);
11 @EXPORT_OK = qw( _load_driver );
12
13 sub _load_driver {
14   my($dbh) = @_;
15   my $driver;
16   if ( ref($dbh) ) {
17     $driver = $dbh->{Driver}->{Name};
18   } else {
19     $dbh =~ s/^dbi:(\w*?)(?:\((.*?)\))?://i #nicked from DBI->connect
20                         or '' =~ /()/; # ensure $1 etc are empty if match fails
21     $driver = $1 or confess "can't parse data source: $dbh";
22   }
23
24   #require "DBIx/DBSchema/DBD/$driver.pm";
25   #$driver;
26   eval 'require "DBIx/DBSchema/DBD/$driver.pm"' and $driver or die $@;
27 }
28
29 1;
30