use Data::Dumper; print Dumper(+{ unsorted => \@array }); @array = sort { $$a[0] <=> $$b[0] or $$a[1] <=> $$b[1] or $$a[2] <=> $$b[2] } @array; use Data::Dumper; print Dumper(+{ sorted_on_first_three_elements => \@array }); #### use Data::Dumper; print Dumper(+{ unsorted => \@array }); @array = sort { for my $i (0 .. $#a) { if (not ($$a[$i] == $$b[$i])) { return $$a[$i] <=> $$b[$i]; } } return 0; } @array; use Data::Dumper; print Dumper(+{ sorted => \@array }); #### my @user = ( # [ username, fullname, authlevel, { otherinfo } ], [ 'george', 'George Jetson', $AUTH_EMPLOYEE, { supervisor => 'spaceley', pet => 'astro', } ], [ 'astro', 'Astro', $AUTH_BASIC, { supervisor => 'george', } ], [ 'hhoyt', 'Herman Hoyt', $AUTH_PROFESSOR, { supervisor => 'amcclain', department => 'theology', } ], # and so on and so forth );