#!c:/perl/bib/perl -w $|++; use strict; my %map = ( S => 0, M => 1, L => 2, Xl => 3 ); my @sorted = map { $_->[0] } sort { ( $map{$a->[1]} <=> $map{$b->[1]} ) || ( $a->[2] cmp $b->[2] ) } map { chomp; /^\w+:\s+(\w+),\s+\w+:\s+(\w+)$/; [$_, $1, $2] } ; print join("\n", @sorted); __DATA__ size: L, color: White size: M, color: Orange size: M, color: White size: M, color: White size: S, color: Orange size: S, color: White size: Xl, color: Orange size: Xl, color: White size: Xl, color: White