2012-05-22 9 views
8

Sé que es posible declarar una matriz como esta:Declarar una matriz con valores incrementales en Perl

my @array = (5 .. 10); 

lo que equivale a:

my @array = (5, 6, 7, 8, 9, 10); 

pero hay una forma abreviada similar cuando el incremento el valor es mayor que uno, por ejemplo

my @array = (5, 10, 15, 20, 25); 
my @array = (100, 200, 300, 400, 500); 

Respuesta

22
my @array = map 5*$_, 1..5; 

y

my @array = map 100*$_, 1..5; 
+0

' "mis" máscaras @array variables declaración anterior en el mismo scope' :) – DVK

+1

Gracias @ikegami! –

+1

@DVK, dos ejemplos separados, al igual que en el OP – ikegami

4

más general:

my $start = 5; 
my $stop = 25; 
my $increment = 5; 
my @array = map $start+$increment*$_, 0..($stop-$start)/$increment; 

o:

chomp(my @array = `seq $start $increment $stop`); 

(Es broma.)

+1

En realidad es 'seq $ start $ increment $ stop' ;-) - http://linux.die.net/man/1/seq – simbabque

2

También puede usar List::Maker de Damian Conway.

use List::Maker; 
my @list = <0..100 x 5>; 
Cuestiones relacionadas