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

Mel14141 Messages postés 20 Statut Membre -  
[Dal] Messages postés 6122 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

2 réponses

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    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
    1. 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
    2. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      en ligne 10, à la place de "# do something with $totally", fait quelque chose avec $totally, par exemple :
      print "totally = $totally\n";
      0
    3. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
       
      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
    4. 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
    5. 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
  2. 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
    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
      1. 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
    2. Mel14141 Messages postés 20 Statut Membre
       
      je ne sais pas ce qu'il se passe
      0
    3. Mel14141 Messages postés 20 Statut Membre
       
      As-tu besoin de mon code pour voir ce que j'ai fait ?
      0