Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在perl中从字符串变量复制模式_Perl - Fatal编程技术网

如何在perl中从字符串变量复制模式

如何在perl中从字符串变量复制模式,perl,Perl,我需要使用perl在=和)之间复制一个句子的内容。 比如说: $temp="06/18/2012 08:35:35(PID=2150)"; 现在我需要将=和之间的值2150)复制到一个变量$temp2,该变量可以使用正则表达式轻松实现: my ($temp2) = $temp =~ /=(\d+)\)/; 只需查找=和\)之间的数字序列。结束括号必须转义,因为括号用于捕获组 必须将$temp2括在括号中的原因是需要强制列表上下文返回匹配结果。在标量上下文中,您只需要获得匹配的数量;1在本例

我需要使用perl在
=
之间复制一个句子的内容。 比如说:

 $temp="06/18/2012 08:35:35(PID=2150)";

现在我需要将
=
之间的值
2150
复制到一个变量
$temp2

,该变量可以使用正则表达式轻松实现:

my ($temp2) = $temp =~ /=(\d+)\)/;
只需查找
=
\)
之间的数字序列。结束括号必须转义,因为括号用于捕获组

必须将
$temp2
括在括号中的原因是需要强制列表上下文返回匹配结果。在标量上下文中,您只需要获得匹配的数量;1在本例中。

仅使用index()和substr()(如果有,作为练习;)


+1用于仔细展示如何在没有正则表达式的情况下完成这项工作-用于讨论为什么我们需要正则表达式。)哈哈,当然-这表明,虽然人们(至少一开始)说regex看起来很恶心。。。另一种选择可能会更恶心!另一个新颖的解决方案是
my$temp2=join',grep/\d/,grep{/=/../\)/}split//,$temp。但不是很健壮。
$temp="06/18/2012 08:35:35(PID=2150)";
$temp = substr $temp, index($temp, "=") + 1, (index($temp, ")") - 1) - index($temp, "=");
print $temp;