my $sth = do->("SELECT bug_id, owner, subject, status, assigned FROM BUGS"); while ( my ( $bug_id, $owner, $subject, $status, $assigned ) = $sth->fetechrow ) { push @{$bugTable{$bug_id}}, ( $owner, $subject, $status, $assigned ); } print "Which column would you like to sort by?\n"; print "\t Bug_ID(1), Owner(2), Subject(3) ". ", Status(4) or Assigned_To(5) ?: "; my $input = ; SWITCH: for ($input) { /1/ && do { @srtArr = sort { $a <=> $b } keys %bugTable; last; }; /2/ && do { @srtArr = sort { ${$bugTable{$a}}[0] cmp ${$bugTable{$b}}[0] } keys %bugTable; last; }; /3/ && do { @srtArr = sort { ${$bugTable{$a}}[1] cmp ${$bugTable{$b}}[1] } keys %bugTable; last; }; /4/ && do { @srtArr = sort { ${$bugTable{$a}}[2] cmp ${$bugTable{$b}}[2] } keys %bugTable; last; }; /5/ && do { @srtArr = sort { ${$bugTable{$a}}[3] cmp ${$bugTable{$b}}[3] } keys %bugTable; last; }; } # End of SWITCH. for my $bug_id ( @srtArr ) { print " @{$bugTable{$bug_id}} \n"; }