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

(débutant) récupérer une valeur d'un tableu

1 réponse
Avatar
Nicolas Roudninski
Bonjour,

Je débute en perl et, pour me faire la main, j'ai écrit un petit
programme destiné à copier des titres de dvd. Hélas, j'ai un petit souci
avec un bout de code :

@sortie = `lsdvd $Dev_dvd`;
print "\n";
my @dvd_title = grep s/Disc Title: //, @sortie;
my $dvdtitle = $dvd_title[0];
@sortiegrep = grep s/Disc Title:/Titre du disque :/, @sortie;
@sortiegrep = grep s/_/ /, @sortie;
print "Titre du DVD : @sortiegrep\n";

Ceci affiche bien le titre du dvd, mais je voudrais utiliser cette
"@sortiegrep" pour créer un répertoire du même nom. Or, si j'utilise
directement @sortiegrep il y a un saut de ligne après (normal). Je
n'arrive pas à récupérer cette valeur comme scalaire et enlever ce saut
de ligne...

Quelqu'un aurait-il une idée ?

Merci d'avance.

PS : Si je m'exprime mal j'en suis désolé. Je suis à votre disposition
pour tout renseignement.

--
Nicolas Roudninski
nroudninski@wanadoo.fr

1 réponse

Avatar
Jacques Caron
Salut,

On Mon, 02 May 2005 22:58:20 +0200, Nicolas Roudninski
wrote:

Je débute en perl et, pour me faire la main, j'ai écrit un petit
programme destiné à copier des titres de dvd. Hélas, j'ai un petit souci
avec un bout de code :

@sortie = `lsdvd $Dev_dvd`;
print "n";
my @dvd_title = grep s/Disc Title: //, @sortie;
my $dvdtitle = $dvd_title[0];
@sortiegrep = grep s/Disc Title:/Titre du disque :/, @sortie;
@sortiegrep = grep s/_/ /, @sortie;
print "Titre du DVD : @sortiegrepn";

Ceci affiche bien le titre du dvd, mais je voudrais utiliser cette
"@sortiegrep" pour créer un répertoire du même nom. Or, si j'utilise
directement @sortiegrep il y a un saut de ligne après (normal). Je
n'arrive pas à récupérer cette valeur comme scalaire et enlever ce saut
de ligne...


Pourquoi continuer à utiliser des tableaux là où (je suppose) il ne
devrait y avoir qu'une seule valeur? Les deux lignes @sortiegrep...
peuvent être remplacées par:
$dvdtitle =~ s/Disc Title:/Titre du disque:/;
$dvdtitle =~ s/_/ /g;

Et pour enlever le n à la fin, au choix, soit un bête chop $dvdtitle si
tu es sûr qu'il y en a un à chaque fois. Sinon chomp $dvdtitle ou encore
dvdtitle =~ s/n// ça marche aussi.

Au passage, je ne suis pas convaincu que grep s/.../.../ soit vraiment ce
que tu cherches, peut-être que grep /.../ ou map s/.../.../ seraient plus
adaptés (même si ça marche, je pense que ça risque d'avoir des effets
surprenants que tu n'anticipes pas forcément).

Bon courage...

Jacques.
--
Interactive Media Factory
Création, développement et hébergement
de services interactifs: SMS, SMS+, Audiotel...
http://www.imfeurope.com/