0

我在 perl 中有以下代码:

 package SignatureScheme;

  use strict;
  use warnings;

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

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

4

2 回答 2

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 }
}
于 2013-06-13T03:11:23.900 回答
1
my @schemes = (SHA256_RSA_V1, SHA256_HMAC_V1);

foreach my $scheme (@schemes) {
  if ($scheme eq $string) {
      # do something
  }
}
于 2013-06-13T02:12:11.423 回答