map ?

Le
gerbier
bonjour

j'essaie d'utiliser map sur un tableau pour éviter une boucle foreach
dans cet exemple j'essaie de supprimer l'extension de fichier

le foreach marche, pas le map :
./essai.pl
1 2 3
1 1 1
je soupçonne un problème de contexte ?

#!/usr/bin/perl
use strict;
use warnings;

my @list = ('1.rrd', '2.rrd', '3.rrd');
my @list2 = @list;

foreach (@list) {
s/.rrd//;
}

print "@list";

my @list3 = map { s/.rrd// } @list2;

print "@list3";
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #148489
gerbier wrote in message
my @list3 = map { s/.rrd// } @list2;


Tu es en train de faire :

$_ = $list2[0];
$list3[0] = s/.rrt//;

Ce n'est pas comme ça que marche l'opérateur s : il change ce sur quoi il
agit, et retourne un booléen. Donc de deux choses l'une :

my @list3 = map { s/.rrd//; $_ } @list2;

map { s/.rrd// } @list2;

Note que même dans le premier cas, @list2 se retrouve modifié, à cause de
l'aliasing.

Publicité
Poster une réponse
Anonyme