El código que he escrito es la siguiente:¿Por qué la lista de mi mapa Perl devuelve solo 1?
#!/usr/bin/perl
my @input = ("a.txt" , "b.txt" , "c.txt") ;
my @output = map { $_ =~ s/\..*$// } @input ;
print @output ;
Mi intención es dejar que el nombre del archivo sin la extensión almacenado en la matriz @output
. sino que almacena el valor devuelto por s///
lugar del nombre de archivo modificado en @output
, por lo que el resultado es idéntico
1
1
1
así que lo que es la forma correcta de utilizar map
en esta situación?
@derobert: la 's' que falta es un error de edición, lo he solucionado.¡y he probado tu solución y funciona! –
Me alegra oír que funciona. – derobert
Lista :: MoreUtils http://search.cpan.org/perldoc/List::MoreUtils ofrece 'apply' que es perfecto para este tipo de cosas. Funciona como un 'mapa', pero no altera los valores en el argumento de la matriz. 'use List :: MoreUtils 'apply'; mi @output = apply {s /\..*$//} @input; ' – daotoad