如何连接到Perl中的数据库

时间:2013-12-13 08:48:27

标签: database eclipse perl postgresql

我是Perl和Eclipse的新手,我正在尝试将我的Perl脚本连接到我的数据库,但它给了我一个错误:“文件不存在”

#!/usr/bin/perl

use XML::Simple;
use DBI;
use strict;
use Data::Dumper;
use constant {false=>0,true=>1};

my ( $exec_dir, $exec_file ) =
( Win32::GetFullPathName($0) =~ /^(.*)\\([^\\]*)$/ );

my $parmfil = $exec_dir . "\\parms\\parms.xml";
my $p_ref    = XMLin($parmfil);

my ($dsn,$dbusr,$dbpwd) = ( $p_ref->{"DSN"}
                            ,$p_ref->{"db_user"}
                                ,$p_ref->{"db_pwd"}
);
my $dbh = DBI->connect(  "dbi:ODBC:$dsn", $dbusr, $dbpwd )
        or die "SDM Database connect error - $DBI::errstr\n";
$dbh->{LongReadLen} = 1024 * 1024;

if (true)
{
    print "true\n";
}

请帮帮我。

3 个答案:

答案 0 :(得分:1)

我更倾向于相信Perl文件不存在而不是保证

您应该打印$parmfil的值,看看它是否符合您的预期。

您也可以添加此

print "\$parmfil %s exist\n", -f $parmfil ? 'DOES' : 'DOESN'T';

得到“第二意见”。

答案 1 :(得分:-1)

这看起来不正确

my ( $exec_dir, $exec_file ) =
( Win32::GetFullPathName($0) =~ /^(.*)\\([^\\]*)$/ );
列表中的GetFullPathName会根据需要返回路径名和文件名,但是调整器表达式匹配会改变它,看不到它所需要的。如果你想操纵路径,那么在返回值之后,最好这样做。

答案 2 :(得分:-2)

试试这段代码:

use strict;
use FindBin qw($Bin);

my $parmfil = $Bin . "/parms/parms.xml";
my $p_ref    = XMLin($parmfil);