Ing. Branislav Gerzo wrote:
Hello!
Hello,
I am thinking about making clear and short script to rotate array, let's say:
input: @list = (1 .. 20); $start = 10; #starting position $values = 10; #how much values in result
how about for starters:
my @list = qw(a b c d e f g h i j k l m n o p q r s t u v w x y z);
my $result= getsection([EMAIL PROTECTED],20,10);
for( @{ $result }) { print "-$_-\n"; }sub getsection {
my @newa = ();
my ($aref,$strt,$amnt) = @_;
return undef if ref($aref) ne 'ARRAY' || $strt !~ m/^\d+$/ || $amnt !~ m/^\d+$/;
my $last = scalar(@{ $aref });
$last--;
my $begn = 0;
for( $strt .. (($strt + $amnt) - 1) ) {
if($_ <= $last) { push @newa, $aref->[$_]; }
else { push @newa, $aref->[$begn];$begn++; }
}
return [EMAIL PROTECTED];
}
how to get output: @result = ( 5, 6, 7, 8, 9, 11, 12, 13, 14, 15 ); #10 values (I don't want $start in @result)
ofcoure script should work with overlapping too: @list = (1 .. 20); $start = 18; $items = 10;
output: @result = ( 13, 14, 15, 16, 17, 19, 20, 1, 2, 3 ); #10 values
any ideas ?
Why is there a difference of 5 each time:
$start = 10 $result[0] = 5
$start = 18 $result[0] = 13
That's throwing me a bit
HTH :)
Lee.M - JupiterHost.Net
-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>
