Forum Programmation.perl Parser une variable en Perl

Posté par .
Étiquettes : aucune
1
14
avr.
2009
Vu que maintenant je dois faire ca en perl , je repose cette question mais dans le forum Perl !!!!! (Merci à ceux qui m'ont répondu en bash ...)

Je dois parser cette variable
7845124512200904091025.pdf de façon à récupérer
la chaine 20090409

Il faut que je commence impérativement par la fin car la chaine avant 2009 ..
est variable.
Pourriez vous m'aider, je galère un peu

Merci d'avance
  • # Miam perl !

    Posté par (site web personnel) . Évalué à 4.


    #!/usr/bin/perl
    my $nom='7845124512200904091025.pdf';
    if($nom=~m/(\d{8})\d{4}\.pdf$/){
    print "1ドル\n";
    }
  • # Parser une variable en Perl

    Posté par . Évalué à 1.

    J'avais oublié de mentionner :
    L'extension n'est pas toujours pdf ca peut etre autre chose
    • [^] # Re: Parser une variable en Perl

      Posté par (site web personnel) . Évalué à 2.

      dans le code (qui répond à ta question) au dessus, tu remplaces "\.pdf" par "\..+" qui signifie une extension d'au moins un caractère.
      Si tu peux cumuler les extensions (foo.tar.gz), je peux te répondre aussi, mais ça ne sera plus gratuit :)
    • [^] # Re: Parser une variable en Perl

      Posté par (site web personnel) . Évalué à 3.

      En partant du principe que ton extension est faite de "." et de lettres :

      #!/usr/bin/perl
      my $nom='7845124512200904091025.pdf';
      if($nom=~m/(\d{8})\d{4}[\.a-zA-Z]*$/){
      print "1ドル\n";
      }


      et c'est gratuit ;)
      • [^] # Re: Parser une variable en Perl

        Posté par . Évalué à 2.

        et si l'extension est .mp3 ? :)
        • [^] # Re: Parser une variable en Perl

          Posté par (site web personnel) . Évalué à 1.

          c'est un script pour le travail, non ?
          Alors pas de mp3 !

          sinon il y a un truc crade mais qui marche :
          #!/usr/bin/perl
          my $nom='7845124512200904091025.mp3.gz.tar.pdf.paf';
          my $no_dot=(split /\./,$nom)[0]; # recup le premier element du split
          if($no_dot=~m/(\d{4})(\d{2})(\d{2})\d{4}$/){
          print "Fichier : $nom\n";
          print "Annee : 1ドル\n";
          print "Mois : 2ドル\n";
          print "Jour : 3ドル\n";
          }
  • # Parser une variable en Perl

    Posté par . Évalué à 1.

    Merci Arthur
    Et comme c'est gratuit aprés j'arrete ( et je vais bouquiner un peu Perl même si RegExp m'a toujours foutu un mal de tronche !!!)

    #!/usr/bin/perl
    my $nom='7845124512200904091025.pdf';
    if($nom=~m/(\d{8})\d{4}[\.a-zA-Z]*$/){
    print "1ドル\n";
    }

    et si je veux en sortie ?:

    $nom 1ドル (exemple : 7845124512200904091025.pdf 2009 04)

    Puisse ta gratuité répondre à ma question et aprés je disparais ...

    Merci d'avance
    • [^] # Re: Parser une variable en Perl

      Posté par (site web personnel) . Évalué à 1.

      Pour decouper annee / mois / jour :
      #!/usr/bin/perl
      my $nom='7845124512200904091025.pdf';
      if($nom=~m/(\d{4})(\d{2})(\d{2})\d{4}[\.a-zA-Z]*$/){
      print "Fichier : $nom\n";
      print "Annee : 1ドル\n";
      print "Mois : 2ドル\n";
      print "Jour : 3ドル\n";
      }
  • # Parser une variable en Perl

    Posté par . Évalué à 0.

    Merci Arthurr,

    Par contre je souhaiterai que $nom et 1,ドル 2ドル soient sur une même ligne
    sans retour à la ligne

    (cf ex: 7845124512200904091025.pdf 2009 04 ..... )

    quesaco ?
    • [^] # Re: Parser une variable en Perl

      Posté par (site web personnel) . Évalué à 2.


      #!/usr/bin/perl
      my $nom='7845124512200904091025.pdf';
      if($nom=~m/(\d{4})(\d{2})(\d{2})\d{4}[\.a-zA-Z]*$/){
      print "Fichier : $nom 1ドル 2ドル\n";
      }


      c'est juste un print ... le 1ドル est la premiere expression "matchee" avec les parenthese (\d{4}), 2ドル la seconde, ...
  • # Parser une variable en Perl

    Posté par . Évalué à 1.

    Ca y est !!
    Merci Arthurr pour tout.

    Il fallait juste que je rajoute un chop $nom avant le print ( mon fichier devait contenir un retour à ligne).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.