1

有人看到这段代码有什么问题吗?当我们(在 Linux 上)执行它时,我们会直接进入“错误:未知主机”块。

Perl 是 5.8.6 版

$hostname = "host2";

if ($hostname eq "host1") {
  $dbhost = 'dbi:Oracle:dbhost1';
}
elsif ($hostname eq "host2") {
  $dbhost = 'dbi:Oracle:dbhost2';
}
elsif ($hostname eq "host3" || $hostname eq "host4") {
  $dbhost = 'dbi:Oracle:dbhost3';
}
else {
  print "ERROR: UNKNOWN HOST\n";
  die "Can't connect";
}
4

2 回答 2

8

代码没有问题。但是,使用查找表会更简单(也更灵活):

my $driver = 'dbi:Oracle:';
my %dbihosts = (
    host1 => 'dbhost1',
    host2 => 'dbhost2',
    host3 => 'dbhost3',
    host4 => 'dbhost3',
);

my $hostname = "host2";

die "Unknown host '$hostname'" unless exists $dbihosts{ $hostname };

my $dbhost = $dbihosts{ $hostname };
print "$hostname -> $dbhost\n";

$dbh->connect("$driver$dbhost", ...);

PS:你忘了chomp $hostname吗?

于 2010-08-12T18:47:55.807 回答
1

你的代码没有问题。它按我的预期执行。

于 2010-08-12T18:40:46.193 回答