Perl   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了将所有参数作为Perl中的字符串传递给子例程大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试编写一个函数,它可以获取所有参数并将它们打印为完全符合输入的字符串.

例如,使用以下功能:

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 );

大佬总结

以上是大佬教程为你收集整理的将所有参数作为Perl中的字符串传递给子例程全部内容,希望文章能够帮你解决将所有参数作为Perl中的字符串传递给子例程所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:字符串