使用正则表达式进行Perl排序

LKr*_*mer 3 regex sorting perl

我有一个像这样的perl数组字符串:

my @arr = ( "gene1 (100)", "gene2 (50)", "gene3 (120)", ... );
Run Code Online (Sandbox Code Playgroud)

如何用括号中的整数对数组进行排序?

Mil*_*ler 5

使用变换来比较字符串中的第一个数字

use strict;
use warnings;

my @arr = ( "gene1 (100)", "gene2 (50)", "gene3 (120)");

my @sorted = map {$_->[0]}
             sort {$a->[1] <=> $b->[1]}
             map {[$_, /\b(\d+)\b/]} @arr;

print "$_\n" for @sorted;
Run Code Online (Sandbox Code Playgroud)

输出:

gene2 (50)
gene1 (100)
gene3 (120)
Run Code Online (Sandbox Code Playgroud)