解决方法
这显示了直截了当的方式.排序块将$aa和$bb分别设置为$a和$b中的数字值.然后< =>用于数字比较它们.
除非基本技术证明太慢,否则不需要更加模糊的转换方法.
use strict; use warnings; use 5.010; my @arr = ( "gene1 (100)",); my @sorted = sort { my ($aa) = $a =~ / \( (\d+) \) /x; my ($bb) = $b =~ / \( (\d+) \) /x; $aa <=> $bb; } @arr; say for @sorted;
产量
gene2 (50) gene1 (100) gene3 (120)