modification d'un array multiligne
Bonjour,
je suis en train de créer un fichier CSV pour récupérer les valeurs des cellules pour créer des fichiers de configurations.
Je lis le fichier avec le module CPAN TEXT::CSV et dans une cellule je peux avoir plusieurs résultat.
Ce qui donne en gros ca :
Code:
1 2 3
| my $route = "192.168.0.0 255.255.255.0 10.0.0.1
192.168.1.0 255.255.255.0 10.0.0.1
192.168.2.0 255.255.255.0 10.0.0.1"; |
Le but est de rajouter "ip route" avant chaque ligne pour l'intégrer dans un fichier ultérieusement.
J'ai réussi à faire le rajout en passant par une array.
Mais est ce propre?
Est ce que je peux directement modifier la scalar?
J'ai eu deux possibilités.
### 1er solution ###
Code:
1 2 3 4 5 6 7 8 9 10 11
|
my @ligne = split /\n/, $route;
#foreach my $iproute (@ligne) {
# $iproute = "ip route $iproute";
# print "$iproute\n";
# }
#print @ligne; |
### 2è solution ###
Code:
1 2 3 4 5 6 7 8 9 10
| my @lines;
foreach (@ligne) {
s/^$_/ip route $_\n/;
push @lines, $_;
}
$lines[-1] =~ s/\n$//;
print @lines; |
### Résultat ###
ip route 192.168.0.0 255.255.255.0 10.0.0.1
ip route 192.168.1.0 255.255.255.0 10.0.0.1
ip route 192.168.2.0 255.255.255.0 10.0.0.1
Si il y a aussi un moyen de supprimer le dernier retour à la ligne en fin de la boucle je suis preneur :)