将所有参数作为Perl中的字符串传递给子例程
发布时间:2020-12-15 21:41:52 所属栏目:大数据 来源:网络整理
导读:我正在尝试编写一个函数,它可以获取所有参数并将它们打印为完全符合输入的字符串. 例如,使用以下功能: test('arg1' = $arg1,'arg2' = $arg2); 我想在格式正确的函数内得到以下字符串,如下所示: "'arg1' = $arg1,'arg2' = $arg2" 我想这样做,所以我可以打印
我正在尝试编写一个函数,它可以获取所有参数并将它们打印为完全符合输入的字符串.
例如,使用以下功能: test('arg1' => $arg1,'arg2' => $arg2); 我想在格式正确的函数内得到以下字符串,如下所示: "'arg1' => $arg1,'arg2' => $arg2" 我想这样做,所以我可以打印所有参数,就像输入它们进行调试/测试一样. 解决方法
Perl提供了特殊的
debugging hooks,可以让你看到已编译源文件的原始行.您可以编写一个自定义调试器,每次调用子例程时都会打印原始行.
以下内容允许您指定要匹配的一个或多个子例程;每次调用匹配的子程序时,都会打印相应的行. package Devel::ShowCalls; our %targets; sub import { my $self = shift; for (@_) { # Prepend 'main::' for names without a package specifier $_ = "main::$_" unless /::/; $targets{$_} = 1; } } package DB; sub DB { ($package,$file,$line) = caller; } sub sub { print ">> $file:$line: ",${ $main::{"_<$file"} }[$line] if $Devel::ShowCalls::targets{$sub}; &$sub; } 1; 要在以下程序中跟踪函数foo和Baz :: qux的调用: sub foo {} sub bar {} sub Baz::qux {} foo(now => time); bar rand; Baz::qux( qw/unicorn pony waffles/ ); 跑: $perl -d:ShowCalls=foo,Baz::qux myscript.pl >> myscript.pl:5: foo(now => time); >> myscript.pl:7: Baz::qux( qw/unicorn pony waffles/ ); 请注意,这只会打印调用的第一行,因此它不适用于类似的调用 foo( bar,baz ); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |