DBIモジュールを使用してデータベースに接続するのに問題があります。database=oracle
プロパティファイルがあり、その中に、単純なまたはを介してoracleまたはpostgresDBに接続するかどうかを指定しますdatabase=postgres
。プロパティファイルはConfig::Tinyモジュールを使用して設定され、変数は次のように設定されます。
my $database = $config->{myDB}->{database};
...
私が理解していないのは、これはすべての変数で機能しますが、このようなものを試して、プロパティファイルで指定されているデータベースに接続しようとすると...
if($database eq "oracle"){
my $dbh = DBI->connect("dbi:Oracle:host=abc123-server;sid=XE;port=1521","User","Pass");
}
elsif($database eq "postgres"){
my $dbh = DBI->connect("dbi:Pg:dbname=pepperoni;host=789xyz-server;port=5444;","Foo","Bar");
}else{
print "Could not connect to a database";
}
...私はこれらのエラーで終わります:
Global symbol "$dbh" requires explicit package name at supportvuloop.pl line 70.
Global symbol "$dbh" requires explicit package name at reportloop.pl line 80.
Global symbol "$dbh" requires explicit package name at reportloop.pl line 81.
Global symbol "$dbh" requires explicit package name at reportloop.pl line 82.
Global symbol "$dbh" requires explicit package name at reportloop.pl line 88.
if条件の一部でない場合はどちらのDBにも問題なく接続できますが、なぜ今エラーが発生するのか考えてみてください。