#!/usr/bin/perl -l use strict; use warnings; my @arr1 = qw(john:::10 bill:::9 mary:::35 willy:::21); my @arr2 = qw(9 35 10 21); my $i = 0; my %order = map { $_ => $i++ } @arr2; print for sort { my ($c) = $a =~ /:::(\d+)$/; my ($d) = $b =~ /:::(\d+)$/; $order{$c} <=> $order{$d} } @arr1;