Perl中的正则表达式匹配问题

Sam*_*mmi 1 regex perl

我是Perl的新手,任何帮助都将不胜感激.我有2个变量:$release和$env_type.我想检查一个字符串是否包含$release_$env_type,然后做一些事情.例如,

$release="beta";
$env_type="testing";
so string is beta_testing
Run Code Online (Sandbox Code Playgroud)

代码段:

if ( $_ =~ /${release}_${env_type}/ ) {
        #do Something
 }
Run Code Online (Sandbox Code Playgroud)

此if条件无法解决.请告诉我进行此项检查的正确语法是什么?我在谷歌搜索但没有得到任何好的帖子..

请帮忙!

我有一个内容文件:

admin_vh_c9_simv2_edg=/console,/consolehelp
idminternal_vh_c9_simv2_edg=/oim,/soa-infra
sso_vh_c9_simv2_edg=/oim,/soa-infra,/odsm

my $env_type = "edg";
my $release  = "c9_simv2";
#Input file containing contexts
my $idmInternal = "./IdmContexts.conf";
if ( !-e $idmInternal ) {
    die "Unable to find the file $idmInternal!\n";
}

open( MYFILE, $idmInternal );
while (<MYFILE>) {
    chomp;
    if ( $_ =~ /${release}_${env_type}/ ) {
        push( @filtered, $_ );
    }

}
Run Code Online (Sandbox Code Playgroud)

ike*_*ami 6

你的代码很好.问题出在其他地方.以下打印match.

my $release="beta";
my $env_type="testing";

$_ = "so string is beta_testing";

if ( $_ =~ /${release}_${env_type}/ ) {
   print "match\n";
}
Run Code Online (Sandbox Code Playgroud)

注意:/\Q${release}_${env_type}/会更好.它将确保插值变量中的特殊字符与自身匹配.


最有可能的问题:您从文件中读取$release和/或$env_type从文件中读取值,并忘记chomp了尾随换行符.