用于表达式计算的.perldb(Perl调试器)中的别名定义';x';不';行不通

用于表达式计算的.perldb(Perl调试器)中的别名定义';x';不';行不通,perl,debugging,Perl,Debugging,我想知道是否有办法在Perl调试器配置文件.perldb中为转储表达式的命令x定义别名 以下各种别名定义都不起作用: cat .perldb $DB::alias{ 'x0' } = "x '%states'"; # Does not work $DB::alias{ 'x1' } = 'x %config'; # Does not work $DB::alias{ 'x2' } = '"x %config"';

我想知道是否有办法在Perl调试器配置文件
.perldb
中为转储表达式的命令
x
定义别名

以下各种别名定义都不起作用:

cat .perldb
$DB::alias{ 'x0' }    = "x '%states'";             # Does not work
$DB::alias{ 'x1' }    = 'x %config';               # Does not work
$DB::alias{ 'x2' }    = '"x %config"';             # Does not work
$DB::alias{ 'x3' }    = 'x "%config, $foo"';       # Does not work
$DB::alias{ 'x4' }    = 'x "@L"';                  # Does not work
$DB::alias{ 'x5' }    = 'x %config, $foo';         # Does not work
$DB::alias{ 'x6' }    = '"x %config, $foo"';       # Does not work
$DB::alias{ 'xc' }    = 'x %config';               # Does not work
$DB::alias{ 'pFoo1' } = 'print("foo=$var1\n")';    # Works
$DB::alias{ 'pFoo2' } = 'print("$var2\n")';        # Works
$DB::alias{ 'p1' }    = 'print "\$_ =  $_"';       # Works
$DB::alias{ 'code' }  = 's/^.*$/l 1+99999/';       # Works
使用“perl-dscript.pl”启动调试器并使用
=
显示别名后,我得到:

code    s/^.*$/l 1+99999/
p1  print "\$_ =  $_"
pFoo1   print("foo=$var1\n")
pFoo2   print("$var2\n")
x0  x '%states'
x1  x %config
x2  "x %config"
x3  x "%config, $foo"
x4  x "@L"
x5  x %config, $foo
x6  "x %config, $foo"
xc  x %config

如果
.perldb
中的别名定义需要特殊语法,或者它不起作用,有什么想法吗?

这没有文档记录,但是。也就是说,要按预期工作,别名必须是
s//
命令

试试像这样的东西

$DB::alias{ 'x1' } = 's/^.*/x %config/'; 

令人惊叹的!尽管如此,它只适用于转储单个表达式(即变量)。为了使用别名转储多个表达式,我尝试了以下命令<代码>$DB::别名{'xc3'}='s/^.*/x join“,”,qw($var1$var2)/”但是,输出的格式没有正确设置。因此,使用别名命令的输出给出了
0'FOO,BAR'
x$var1,$var2
,并在调试器外壳中直接调用,给出了两行格式正确的元素
0'FOO'1'BAR'
。@Phrosch未测试,但这应该是
's/^.*/x\$var1,\$var2/'