循环perl常量

时间:2013-06-13 02:07:23

标签: perl loops constants

我在perl中有以下代码:

 package SignatureScheme;

  use strict;
  use warnings;

  use constant {
      SHA256_RSA_V1 => 'SHA256-RSA-V1',
      SHA256_HMAC_V1 => 'SHA256-HMAC-V1',
  };

如何循环上面列出的常量并将它们与字符串进行比较?

2 个答案:

答案 0 :(得分:2)

进行一次性比较:

my $string = "xyz";
my $found = grep ($_ eq $string) (SHA256_RSA_V1, SHA256_HMAC_V1);

常量只是返回字符串的子程序,因此您可以在任何您自己使用字符串的地方使用它们。

对于重复比较,为了提高性能,请使用哈希查找。

my %lookup_hash = map {($_=>1)} (SHA256_RSA_V1, SHA256_HMAC_V1);
foreach my $lookup_string (@lookup_strings) {
    if ($lookup_hash{$lookup_string}) {  #do your thing }
}

答案 1 :(得分:1)

my @schemes = (SHA256_RSA_V1, SHA256_HMAC_V1);

foreach my $scheme (@schemes) {
  if ($scheme eq $string) {
      # do something
  }
}