use strict; use warnings; my $list = [ '1','5','2','3','4' ]; my $len = @$list; my @temp = @$list; my @ref = @$list; my $pivot = pop @$list; my @temp1 = $pivot; my %ha = ; while ($len-1){ foreach my $ele (@temp){ next if ($ele eq $pivot); if ($ele gt $pivot) { push @temp1,$ele; } else{ unshift @temp1,$ele; } } print "\n @temp1 \n"; $pivot = pop @$list; print "$pivot \n"; @temp = @temp1; my $i=0; foreach my $ele(@ref){ if ($ele eq $pivot){ $ha{$i}="$ele"; print $ha{$i}; } $i++ } @temp1 =(); @temp1 = $pivot; --$len; } print keys %ha;