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

Fermé
Mel14141 Messages postés 20 Date d'inscription mercredi 17 mai 2017 Statut Membre Dernière intervention 23 mai 2017 - 17 mai 2017 à 09:42
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 - 23 mai 2017 à 14:45
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 17 mai 2017 à 11:45
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 mercredi 17 mai 2017 Statut Membre Dernière intervention 23 mai 2017
17 mai 2017 à 13:43
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 17 mai 2017 à 14:12
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié le 17 mai 2017 à 14:29
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 mercredi 17 mai 2017 Statut Membre Dernière intervention 23 mai 2017
17 mai 2017 à 14:37
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 mercredi 17 mai 2017 Statut Membre Dernière intervention 23 mai 2017
17 mai 2017 à 14:39
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 mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11
Modifié le 17 mai 2017 à 11:49
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 mercredi 17 mai 2017 Statut Membre Dernière intervention 23 mai 2017
17 mai 2017 à 13:42
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 mardi 25 avril 2017 Statut Membre Dernière intervention 20 juillet 2017 11 > Mel14141 Messages postés 20 Date d'inscription mercredi 17 mai 2017 Statut Membre Dernière intervention 23 mai 2017
17 mai 2017 à 13:59
Je ne te comprends pas, les codes données sont testés est fonctionne…
0
Mel14141 Messages postés 20 Date d'inscription mercredi 17 mai 2017 Statut Membre Dernière intervention 23 mai 2017
17 mai 2017 à 14:22
je ne sais pas ce qu'il se passe
0
Mel14141 Messages postés 20 Date d'inscription mercredi 17 mai 2017 Statut Membre Dernière intervention 23 mai 2017
17 mai 2017 à 14:39
As-tu besoin de mon code pour voir ce que j'ai fait ?
0