Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

map ?

1 réponse
Avatar
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\n";

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

print "@list3\n";

1 réponse

Avatar
Nicolas George
gerbier wrote in message <f72k60$sko$:
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.