我是Perl的新手,我將不勝感激。我有2個變量:$release
和$env_type
。我想檢查一個字符串是否包含$release_$env_type
,然後做一些事情。例如,在Perl中與正則表達式匹配的問題
$release="beta";
$env_type="testing";
so string is beta_testing
代碼片段:
if ($_ =~ /${release}_${env_type}/) {
#do Something
}
如果這種狀況不得到解決。請讓我知道什麼是正確的語法來做這個檢查?我在谷歌搜索,但沒有得到任何好帖子。
請幫助!
我有內容的文件:
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, $_);
}
}
那麼,爲什麼之前'if'條件不打印'$ _'? –
看起來應該起作用。現在的問題是:$ _'中包含了什麼,它是否包含「beta_testing」? '嚴格使用;使用警告;'可能會告訴你'$ _'是否未定義。 – Axeman
除非您的變量包含正則表達式元字符,否則使用'\ Q $ {release} _ $ {env_type} \ E'或'quotemeta'轉義變量可能更安全。 – TLP