我在 perl 中有以下代码:
package SignatureScheme;
use strict;
use warnings;
use constant {
SHA256_RSA_V1 => 'SHA256-RSA-V1',
SHA256_HMAC_V1 => 'SHA256-HMAC-V1',
};
如何遍历上面列出的常量并将它们与字符串进行比较?
一次性比较:
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 }
}
my @schemes = (SHA256_RSA_V1, SHA256_HMAC_V1);
foreach my $scheme (@schemes) {
if ($scheme eq $string) {
# do something
}
}