代码之家  ›  专栏  ›  技术社区  ›  wadesworld

不评估Perl Elsif

  •  1
  • wadesworld  · 技术社区  · 14 年前

    有人看到这个代码有什么问题吗?当我们(在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 回复  |  直到 6 年前
        1
  •  8
  •   Eric Strom    14 年前

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

    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 ?

        2
  •  1
  •   Charles    14 年前

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

    推荐文章