替换和排序perl数组元素

And*_*ndy 0 sorting perl

我正在寻找一个优雅的解决方案来排序数组,然后用字母替换数值.我有一些工作在这里,但它是一个巨大的if/else怪物,我敢肯定,可以写得更短.

示例代码:

my $values = "70,20,50";
my @singlevalues = sort(split(/,/,$values));
ifmonster();
my $result = "RBG";
Run Code Online (Sandbox Code Playgroud)

$values其中有三个颜色值,其中第一个代表"R",第二个代表"G",最后一个代表"B".我想对这些值进行排序,最后得到一个字符串$result,从字母到最小的排序形式.

因此"70,20,50"导致"RBG",而"20,50,30"导致"GBR".

谢谢

Dal*_*aen 5

无哈希解决方案:

my @color = split /,/, $value, 3;
my @order = sort { $color[$b] <=> $color[$a] } 0..2;
my $result = join "", qw(R G B)[@order];
Run Code Online (Sandbox Code Playgroud)

@order列表存储一个排列,后来应用于字母列表.