Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 根据函数的大小对函数定义进行排序_Regex_Perl - Fatal编程技术网

Regex 根据函数的大小对函数定义进行排序

Regex 根据函数的大小对函数定义进行排序,regex,perl,Regex,Perl,我从一个.C文件中获取函数定义的大小,并在一个文本文件中列出所有函数定义的名称 代码 我想根据它的大小来分类 您可以使用如下特殊功能: sub by_size { $a =~ /Function \s+ has (\d+\) lines./; my $a_lines = $1; $b =~ /Function \s+ has (\d+\) lines./; my $b_lines = $1; return $a_lines <=> $b_li

我从一个.C文件中获取函数定义的大小,并在一个文本文件中列出所有函数定义的名称

代码

我想根据它的大小来分类


您可以使用如下特殊功能:

sub by_size {
    $a =~ /Function \s+ has (\d+\) lines./;
    my $a_lines = $1;
    $b =~ /Function \s+ has (\d+\) lines./;
    my $b_lines = $1;

    return $a_lines <=> $b_lines;
}

@sorted_output = sort by_size @output;
说明: 这一行告诉sort使用by_size函数进行排序:

@sorted_output = sort by_size @output;
by_size函数有两个输入:称为$a和$b的全局变量。这些都是通过分类传递给它的

此函数处理$a和$b并返回值1、0或-1,表示:

-1->$a在$b之前 0->$a等于$b,用于此排序。 1->$a在$b之后
在这种特定情况下,by_size通过从字符串$a和$b中提取行数来确定顺序。

您可以使用如下特殊函数:

sub by_size {
    $a =~ /Function \s+ has (\d+\) lines./;
    my $a_lines = $1;
    $b =~ /Function \s+ has (\d+\) lines./;
    my $b_lines = $1;

    return $a_lines <=> $b_lines;
}

@sorted_output = sort by_size @output;
说明: 这一行告诉sort使用by_size函数进行排序:

@sorted_output = sort by_size @output;
by_size函数有两个输入:称为$a和$b的全局变量。这些都是通过分类传递给它的

此函数处理$a和$b并返回值1、0或-1,表示:

-1->$a在$b之前 0->$a等于$b,用于此排序。 1->$a在$b之后
在这种特定情况下,by_size通过从字符串$a和$b中提取行数来确定顺序。

尝试按如下方式更改打印循环

foreach my $function (sort {$function_size{$a} <=> $function_size{$b}} keys %function_size) {
    print FILE2 "Function $function has $function_size{$function} lines.\n";
}

它将根据其值(即大小)对%function\u size的键进行数字排序。

尝试如下更改打印循环

foreach my $function (sort {$function_size{$a} <=> $function_size{$b}} keys %function_size) {
    print FILE2 "Function $function has $function_size{$function} lines.\n";
}

它将根据其值(即大小)对%function\u size的键进行数字排序。

谢谢您的解释。两个答案都很好。但是我正在检查第一个,因为它有点小和简单,答案是第一个。但是你为这个问题提供了更好的逻辑。我明白了。谢谢你的解释。两个答案都很好。但是我正在检查第一个,因为它有点小和简单,答案是第一个。但是你为这个问题提供了更好的逻辑。我明白了。thanks@Ad-不客气。很高兴它对你有用。@Ad vic不客气。很高兴它对你有用。
foreach my $function (sort {$function_size{$a} <=> $function_size{$b}} keys %function_size) {
    print FILE2 "Function $function has $function_size{$function} lines.\n";
}