#!/usr/bin/env perl use strict; use warnings; my @list = ( ['blah', 'asdf', 'foo', 'bar'], ['two'], ['zzz', 'def', 'ghi'], ['one'], ['mmm', 'def', 'ghi'], ['qqq', 'xyz', 'aaa'] ); @list = sort { @$a <=> @$b || do { my $cmp; ($cmp = $a->[-$_] cmp $b->[-$_]) ? last : next for 1 .. @$a; $cmp; } } @list; use Data::Dump; dd \@list;