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

Mel14141 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention   -  
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   -
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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 Date d'inscription   Statut Membre Dernière intervention  
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
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 Date d'inscription   Statut Membre Dernière intervention  
 
Peut être que je pourrais vous mettre mon code pour voir si vous voyez le problème ?
0
Mel14141 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
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 265 Date d'inscription   Statut Membre Dernière intervention   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 Date d'inscription   Statut Membre Dernière intervention  
 
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 265 Date d'inscription   Statut Membre Dernière intervention   11 > Mel14141 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
Je ne te comprends pas, les codes données sont testés est fonctionne…
0
Mel14141 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
je ne sais pas ce qu'il se passe
0
Mel14141 Messages postés 20 Date d'inscription   Statut Membre Dernière intervention  
 
As-tu besoin de mon code pour voir ce que j'ai fait ?
0