use Data::Dumper; my ($i,$n,$j,@a,$temp); @a=(8,5,2,4,88,1,5,4,3,2); $n=10; for ($i=1; $i lt $n; $i++){ # print $i; $j=$i; $temp=$a[$j]; while ($j gt 0 and $a[$j-1] gt $temp) { $a[$j]=$a[$j-1]; $j--; } $a[$j]=$temp; } print Dumper(\@a);