sub make_sorter { my $order = shift; return sub { by_list( $order ) }; } my $order1 = make_sorter( [ qw( a c d e b f ) ] ); my $order2 = make_sorter( [ qw( f b a d c e ) ] ); my @order1 = sort $order1, @tobesorted; my @order2 = sort $order2, @tobesorted; my @other2 = sort $order2, @othertobesorted;