perl - 我需要重置 Perl 哈希索引吗?

标签 perl hash

好吧,这是一个 N00b 问题,但它让我难住了:

我有以下 Perl 代码:

%project_keys = (
  cd     => "continuous_delivery",
  cm     => "customer_management",
  dem    => "demand",
  dis    => "dis",
  do     => "devops",
  sel    => "selection",
  seo    => "seo"
);

print "proj_code is $proj_code\n";
while ( ($key, $value) = each %project_keys ) {
    if ($key == $proj_code) {
        $url = "http://projects/".$project_keys{$key}."/setter";
        last;
    }
}

$proj_code 总是在相同的 ('dis') 中传递,打印行显示了这一点。

但是,每次我运行它时,我都会得到一个不同的 project_keys{$key} 值。

我做错了什么(毫无疑问是显而易见的)事情?我看到过关于每个人如何“脆弱”的评论 - 是这样吗?

最佳答案

如果您已经有了您期望的“ key ”,请检查它是否存在并使用它...

另外,总是使用use strict;使用警告;

#!/usr/bin/perl

use strict;
use warnings;

my $proj_code= 'dis';
my $url;

my %project_keys = (
  cd     => "continuous_delivery",
  cm     => "customer_management",
  dem    => "demand",
  dis    => "dis",
  do     => "devops",
  sel    => "selection",
  seo    => "seo"
);

$url = "http://projects/$project_keys{$proj_code}/setter" 
    if exists $project_keys{$proj_code};

print "url: $url\n";

输出:

url: http://projects/dis/setter

关于perl - 我需要重置 Perl 哈希索引吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22339226/

相关文章:

regex - 使用 perl 脚本从字符串中删除特殊字符

regex - Perl拆分奇怪的行为

Perl:文件大于 2 GB 的 glob 的奇怪行为

hash - 为什么不能对md5进行逆向工程?

asp.net-core - 在 .net Core 中像表单例份验证一样加密密码

perl - 如何使用 Mojo 进行内部重定向?

linux - 不要成功将 perl 解释器包含到 vim 中

python - crypt 在 osx 中不起作用,返回错误值

c++ - C++中的无序集合,为什么需要散列?

C 在调整哈希表大小时遇到​​问题