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

Mel14141 Messages postés 20 Date d'inscription   Statut Membre 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


 
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
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