Récupérer une chaine de caractère à droite

Mel14141 Messages postés 20 Statut Membre -  
[Dal] Messages postés 6373 Statut Contributeur -
Bonjour à tous,

Je débute complètement en perl et j'ai besoin d'aide sur un sujet.

J'ai créé un petit programme en perl qui permet :
- d'aller dans un répertoire
- de lire tous les fichiers qui s'y trouvent
- de créer un fichier excel
- de mettre dans ce fichier excel certaines données

Etant donné que ces données sont des log je n'ai pas besoin de tout récupérer.

Je m'explique :
sur une ligne j'ai : "blablablablablabla - bliblibliblibliblibliblibli bliblibliblibliblibliblibli "
Je voudrais récupérer la chaine derrière le "-" soit "bliblibliblibliblibliblibli bliblibliblibliblibliblibli " sachant que je récupére la totalité de la chaine dans une variable qui s'appelle "$totally".

Merci d'avance
A voir également:

2 réponses

[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Salut,

Si tu as un seul
-
séparé par un espace avant et après, c'est assez facile :

#!/usr/bin/perl

use strict;
use warnings;

my $st = "blablablablablabla - bliblibliblibliblibliblibli bliblibliblibliblibliblibli ";
if ($st =~ /\s-\s(.*)$/) {
    my $totally = $1;
    # do something with $totally
} else {
    print "Error, incorrect format in $st\n";
}

Dal
3
Mel14141 Messages postés 20 Statut Membre
 
Bonjour,

Merci pour ta réponse mais la ligne de commande n'ont aucun effet, même pas de message d'erreur.

Penses-tu qu'il peu y avoir un soucis dans mon code ?
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
en ligne 10, à la place de "# do something with $totally", fait quelque chose avec $totally, par exemple :
print "totally = $totally\n";
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
autres précisions : ce n'est pas une "ligne de commande" mais un script Perl, à mettre dans un fichier texte et à faire exécuter par ton interpréteur Perl, et ce n'est pas ton code, c'est le mien :-)

ou celui de Felice_


P.S.

Salut Felice_ ! c'est sympa d'avoir un contributeur sur le forum Perl, et qui en plus est lettré en Perl 6 ;-)
0
Mel14141 Messages postés 20 Statut Membre
 
Peut être que je pourrais vous mettre mon code pour voir si vous voyez le problème ?
0
Mel14141 Messages postés 20 Statut Membre
 
Excuse moi mais j'ai utilisé ton code dans mon script je l'ai intégré si tu veux pour le faire fonctionner pour mon utilisation.
0
Felice_ Messages postés 271 Statut Membre 11
 
Bonjour :

Soit tu coupes avec la fonction « split » :

En Perl 5 :
use strict;
use warnings;

my $totally   = 'blablablablablabla - bliblibliblibliblibliblibli bliblibliblibliblibliblibli ';
my @donnees = split(' - ', $totally);

print $donnees[1] . "\n";


En Perl 6 :
my $totally   = 'blablablablablabla - bliblibliblibliblibliblibli bliblibliblibliblibliblibli ';
my @donnees = split(' - ', $totally);

put @donnees[1];


Soit tu utilises les expressions régulières :

En Perl 5 :
my $totally = 'blablablablablabla - bliblibliblibliblibliblibli bliblibliblibliblibliblibli ';
   $totally =~ /^[^-]+ - (.+)$/;

print $1 . "\n";


En Perl 6 :
my $totally = 'blablablablablabla - bliblibliblibliblibliblibli bliblibliblibliblibliblibli ';
   $totally ~~ /^.+ \- (.+)$/;

put $0;
1
Mel14141 Messages postés 20 Statut Membre
 
Bonjour,


Merci pour ta réponse mais les lignes de commandes n'ont aucun effet, même pas de message d'erreur.

Penses-tu qu'il peu y avoir un soucis dans mon code ?
0
Felice_ Messages postés 271 Statut Membre 11 > Mel14141 Messages postés 20 Statut Membre
 
Je ne te comprends pas, les codes données sont testés est fonctionne…
0
Mel14141 Messages postés 20 Statut Membre
 
je ne sais pas ce qu'il se passe
0
Mel14141 Messages postés 20 Statut Membre
 
As-tu besoin de mon code pour voir ce que j'ai fait ?
0