Perl 如何在调试时还原全局变量$1、$2、$3?

Perl 如何在调试时还原全局变量$1、$2、$3?,perl,debugging,Perl,Debugging,使用正则表达式调试代码时: m/()()/; my$x=$1; $DB::single=1; my$y=$2+3; 把断点放在某条线上。我可以运行第三方代码。 如果该代码使用对regex的调用,那么$2和$3将被破坏 当我继续脚本时,有没有办法通过调试器将$2和$3恢复为它们的初始值?(cdebugger命令)能否将值存储在变量中 m/()()/; 我的($x,$2,$3)=($1,$2,$3); $DB::single=1; my$y=$2+$3; 它是自动发生的 $perl-e' “abc

使用正则表达式调试代码时:

m/()()/;
my$x=$1;
$DB::single=1;
my$y=$2+3;
把断点放在某条线上。我可以运行第三方代码。 如果该代码使用对regex的调用,那么$2和$3将被破坏


当我继续脚本时,有没有办法通过调试器将$2和$3恢复为它们的初始值?(
c
debugger命令)

能否将值存储在变量中

m/()()/;
我的($x,$2,$3)=($1,$2,$3);
$DB::single=1;
my$y=$2+$3;

它是自动发生的

$perl-e'
“abc”=~/()/;
核心::说“[$1$2$3]”;
{
“def”=~/()/;
核心::说“{$1$2$3}”;
}
核心::说“[$1$2$3]”;
'
[美国广播公司]
{def}
[美国广播公司]
regex捕获变量在其更改的范围退出时隐式恢复。当您从调试器中执行代码时,regex捕获变量甚至在返回调试器之前都会被还原

$perl-d-e'
“abc”=~/()/;
核心::说“[$1$2$3]”;
核心::说“[$1$2$3]”;
'
[剪报]
主语:(-e:2):“abc”=~/()/;
DB s
main:(-e:3):核心::说“[1$2$3]”;
DB s
[美国广播公司]
main:(-e:4):核心::说“[1$2$3]”;
DB p“{$1$2$3}”

{abc}我正在调试第三方代码。我不能改变它。你的意思是,一种比
@tmp=@{^CAPTURE}$r=连接“”,映射{“(“.quotemeta($)”)}@tmp;(加入“”@tmp)=~/$r/
?;-)