regex - 如何在执行时在 perl 脚本中显示子例程的数量及其名称?

标签 regex linux perl

以下面的 Perl 脚本 script.pl 为例:

use strict;
use warnings;
sub f1
{statements}
sub f2
{statements}
sub f3
{statements}
f1();f2();f3();

当我执行脚本时,它应该显示以下输出:

./script.pl

number of subroutines:3
names of subroutines:f1 f2 f3

代码执行时,如何统计子程序的个数,获取子程序的名称,然后在运行时打印出来?

最佳答案

您正在寻找Devel::Symdump :

#!/usr/bin/env perl

use strict;
use warnings;

{
    require Devel::Symdump;
    my $sym = Devel::Symdump->new('main');
    my @subs = $sym->functions;
    printf "Number of subroutines: %d\n", scalar @subs;
    printf "Names of subroutines: %s\n", join(q{, } => map { s/^main:://; $_ } @subs);
}

sub f1 {
    # statements
}

sub f2 {
    # statements
}

sub f3 {
    # statements
}

f1();
f2();
f3();

输出:

Number of subroutines: 3
Names of subroutines: f2, f1, f3

关于regex - 如何在执行时在 perl 脚本中显示子例程的数量及其名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44387132/

相关文章:

linux - 如何从 Whiptail 返回值 --yesno

c++ - 如何安全终止多线程进程

linux - 用户访问 Linux 服务器上的文件夹

xml - perl LibXML 编写XML文档

javascript - 我的日期正则表达式有什么问题?

javascript - 正则表达式通过 html 标签和普通字符串中的空格分隔字符串

node.js - 如何使用javascript正则表达式和nodejs writeFile修改里面的HTML标签?

python - 用于匹配重复(未知)子字符串的正则表达式

perl - 找不到对象方法 "SSL_ca_file"

regex - Perl 正则表达式中的大括号