测试字符串是否包含Perl中哈希的键

Jor*_*dan 1 regex string perl hashmap

我有一个字符串,并想知道它是否包含哈希的键,如果它,我想打印哈希的值,如下所示:

#!/usr/bin/perl -w

my %h = ( 'key1' => 'v1', 'key2' => 'v2', 'key3' => 'v3' );
my $str = "this is a string containing key1\n";
if ($str contains a key of %h){
    print the value of that key; #i.e v1
}
Run Code Online (Sandbox Code Playgroud)

什么是最好的方法呢?(最好简明扼要地包含在if语句中)

Ama*_*dan 5

#!/bin/perl -w

my %h = ( 'key1' => 'v1', 'key2' => 'v2', 'key3' => 'v3' );
my $str = "this is a string containing key1\n";
while (($key, $value) = each %h) {
  if (-1 != index($str, $key)) {
    print "$value\n";
  }
}
Run Code Online (Sandbox Code Playgroud)

  • @jaypal,`> =`,而不是`>`. (4认同)
  • 如果索引($ str,$ key)> 0,那就是编写`print'$ value \n"非常非常规的方式; (2认同)