Perl elsif не оценивается - PullRequest
       0

Perl elsif не оценивается

1 голос
/ 12 августа 2010

Кто-нибудь видел что-нибудь не так с этим кодом?Когда мы его выполняем (в 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";
}

Ответы [ 2 ]

8 голосов
/ 12 августа 2010

В коде нет ничего плохого. Однако использование таблицы поиска было бы проще (и более гибким):

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?

1 голос
/ 12 августа 2010

В вашем коде нет ничего плохого. Это выполняется как ожидалось для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...