use strict; use warnings; use Data::Dump; use List::MoreUtils qw( first_index ); my @fruit = qw( APPLE ORANGE PEACH GRAPE BANANA PINEAPPLE ); my @subset = qw( PINEAPPLE GRAPE APPLE ); #my @subset = qw( PINEAPPLE GRAPE PEACH BANANA APPLE ORANGE ); my @results = sort fruit_order @subset; dd \@results; sub fruit_order { (first_index { $a eq $_ } @fruit) <=> (first_index { $b eq $_ } @fruit); } #### 18:00 >perl 2017_SoPW.pl ["APPLE", "GRAPE", "PINEAPPLE"] 18:04 >