我在不同的服务器上运行脚本,并希望从对象名称中获取env。但是对象名称可能因服务器而异。 不同服务器中的对象名称:
QDEV1,QDEV2,QQA1,QQA2,QCERT1,QCERT2,QPROD1,QPROD2.
不,我正在尝试使用substr将env作为DEV,QA,CERT,PROD。我将对象名称作为脚本的一个条目。
$env = substr($objectname, -4,[3-4]);
print $env;
在开发环境中运行时返回DEV1 / DEV2,在QA中运行QQA1 / QQA2。我只需要$ env
output(any one of these): DEV or QA or CERT or PROD
答案 0 :(得分:4)
您可能只想使用简单匹配。例如:
$objectname =~ /(DEV|QA|CERT|PROD)/;
print $1;
如果您只想获取不带前导Q
的名称和可以使用的尾随数字:
$objectname = "QFOO2";
$objectname =~ /^Q([^\W\d]+)\d+$/;
print $1; # prints "FOO"
如果你不想要其余的话,你可以直接替换变量:
$objectname = "QFOO43";
$objectname =~ s/^Q([^\W\d]+)\d+$/$1/;
print $objectname; # prints "FOO"