0

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

导入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";

请帮我解决这个问题。

4

2 回答 2

3

欢迎来到 SO。

首先,您应该始终use strict帮助use warnings您发现代码中的问题。

connect您的行中有语法错误。尝试这个:

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

忠告:以变量代表的内容命名变量是个好主意。我建议$dbh使用数据库句柄而不是$connect,但这当然取决于偏好。

于 2012-06-15T08:01:40.057 回答
3

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

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

你需要的是一个类方法调用,像这样

my $connect = DBI->connect($dsn, $user, $password)
    or die "can't connect to the db: $DBI::errstr\n";
于 2012-06-15T08:03:26.230 回答