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->(...)が間違っています。

1 つではなく2 つのコロンを使用し、矢印を削除した場合、有効な構文になりますが、それでも機能しません。

必要なのは、このようなクラス メソッド呼び出しです。

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