#!/usr/bin/perl -- use strict; use warnings; use Data::Dump qw/ dd pp /; open my($fh),'<:encoding(UTF-8)', 'deleteme.txt' or die $!; my $file = <$fh>; close $fh; my $dsn = "dbi:SQLite:dbname=$file"; # extract dbi:driver prefix from $dsn into $1 $dsn =~ s/^dbi:(\w*?)(?:\((.*?)\))?://i or '' =~ /()/; # ensure $1 etc are empty if match fails my $driver_attrib_spec = $2 || ''; # Set $driver. Old style driver, if specified, overrides new dsn style. my $driver = $1 or die pp( $file, $dsn, [ $1, $2 ] ); dd( $file, $dsn, [ $1, $2 ] );