sub sorted_insert (\@$) { my( $a, $item ) = @_; unless( @{$a} ) { push @{$a}, $item; return } my $i = 0; while( $i <= $#{$a} ) { last if $a->[$i] > $item; $i++; } splice( @{$a}, $i, 0, $item ); return $a } @a = qw( 1 2 4 6 ); sorted_insert @a, 3; sorted_insert @a, 7; print join( ", ", @a ), "\n";