测试一个字符串是否包含另一个字符串中的任何单词

时间:2016-07-25 16:25:48

标签: perl variables

我有一个Perl程序代码,用于从哈希中提取描述字符串。

我的变量$ui等于变量$uniqueID,但我想要的是$ui 包含变量{{中的任何单词时返回true 1}}。但$unqiueID无效。

有这样做的聪明方法吗?

=~

2 个答案:

答案 0 :(得分:2)

测试一个标量变量是否包含另一个变量的简单方法是:

if ($ui =~ /$uniqueID/) {
    ...
}

(正如@Markus Laire指出的那样,您也可以使用/\b$uniqueID\b/来阻止部分字词匹配。)

答案 1 :(得分:0)

您的目的不明确,但听起来$uniqueID是一个单词列表,您想要%HASHLISTuniqueID与其中任何一个匹配的第一个条目字

这将为您做到这一点,但我必须说您的数据结构并非适合这项工作

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;
}