使用Perl DBI模块的语法错误

时间:2012-06-15 07:56:39

标签: perl dbi

我正在编写Perl代码并使用扩展名为.pm的文件中的DBI模块。

导入DBI模块时,我收到类似

的错误
syntax error at /etc/perl/Foo.pm line 13, near "DBI:"
Compilation failed in require at join.pl

join.pl文件中,我们将模块Foo.pm称为

use Foo;
Foo::dbconnect();

并且Foo.pm中的代码就像这样

#!/usr/bin/perl

package Foo;

use DBI;

sub dbconnect {
  my $database = "DB_NAME";
  my $user ="user_name";
  my $password = "password";
  my $dsn = "dbi:mysql:$database:localhost:3306";
  my $connect = DBI:connect->($dsn, $user, $password)
      or die "can't connect to the db   $DBI::errstr\n";
  return $connect;
}

1;

我收到了

行中的错误
my $connect = DBI:connect->($dsn, $user, $password)
    or die "can't connect to the db   $DBI::errstr\n";

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:3)

欢迎来到SO。

首先,您应始终use strictuse warnings来帮助查找代码中的问题。

connect行中存在语法错误。试试这个:

my $connect = DBI->connect($dsn, $user, $password) 
    or die "can't connect to the db $DBI::errstr\n";

建议:在变量代表之后命名变量是个好主意。我建议{em>数据库句柄而不是$dbh $connect,但这当然取决于偏好。

答案 1 :(得分:3)

您用于connect方法DBI:connect->(...)的语法错误。

如果您使用两个冒号而不是一个冒号并删除了箭头,那将是有效的语法,但它仍然不起作用。

你需要的是一个类方法调用,比如这个

my $connect = DBI->connect($dsn, $user, $password)
    or die "can't connect to the db: $DBI::errstr\n";