2011-03-16 16 views
23

Cuando manipular archivos CSV en Perl que a menudo tienen una necesidad para inicializar una matriz con un número de mismos elementos:perl - cómo crear una matriz con n cadenas vacías o ceros?

my $arr = []; 
for my $i (0..$n-1) { 
    push @$arr, ""; 
} 

¿Hay una manera de hacerlo de una forma más compacta?

Perfectamente Me gustaría tener una expresión para este fin, de modo que pueda agregar columnas que faltan fácilmente:

f([@$some_tab, n_elems("", $column_number - scalar(@$some_tab))]); 

Yo sé cómo escribir una función, pero nunca hacerlo en los scripts de 10 líneas .

Respuesta

40

Usa el multiplicador.

my @arr = ("") x $n; 

Actualización: tenga en cuenta que esto duplica el elemento, que podría no ser conveniente si usted está llenando la matriz con referencias. En tal caso, donde se necesita construir cada elemento, puede usar un map:

my @arr = map { [] } 1..$n; 
Cuestiones relacionadas