我有一个Perl程序代码,用于从哈希中提取描述字符串。
我的变量$ui
等于变量$uniqueID
,但我想要的是$ui
包含变量{{中的任何单词时返回true 1}}。但$unqiueID
无效。
有这样做的聪明方法吗?
=~
答案 0 :(得分:2)
测试一个标量变量是否包含另一个变量的简单方法是:
if ($ui =~ /$uniqueID/) {
...
}
(正如@Markus Laire指出的那样,您也可以使用/\b$uniqueID\b/
来阻止部分字词匹配。)
答案 1 :(得分:0)
您的目的不明确,但听起来$uniqueID
是一个单词列表,您想要%HASHLIST
中uniqueID
与其中任何一个匹配的第一个条目字
这将为您做到这一点,但我必须说您的数据结构并非适合这项工作
sub getDescription {
my ($uniqueID) = @_;
my %wanted = map { $_ => 1 } split ' ', $uniqueID;
for my $ui ( values %HASHLIST ) {
my @ids = @{ $item->{uniqueID} };
return $item->{description} if @wanted{@ids};
}
return $retval;
}