我在perl中有以下代码:
package SignatureScheme;
use strict;
use warnings;
use constant {
SHA256_RSA_V1 => 'SHA256-RSA-V1',
SHA256_HMAC_V1 => 'SHA256-HMAC-V1',
};
如何循环上面列出的常量并将它们与字符串进行比较?
答案 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
}
}