IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Aide expression reguliere


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut probleme
    Merci c reslou
    et longue vie A ce forum

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 584
    Points : 2 031
    Points
    2 031
    Par défaut
    Citation Envoyé par theblow_wind
    merci de votre aide
    Bonjour. Et qu'est-ce que tu attend de nous exactement ?

    Que l'on fasse l'exo à ta place ? Si oui, tu risques d'attendre longtemps mais dans le cas contraire, montre nous le code que tu as fait de ton côté et on essaiera de t'aider

  3. #3
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Bonjour,

    Je n'utilise jamais le passage d'arguments en ligne de commande mais tu dois utiliser la variable @ARGV
    Tu lances ton script dans la console "nomfichier.pl argument1 argument2"
    Enfin quelque chose comme ça, renseigne toi


    Passage d'arguments

    Les arguments passés par la ligne de commande sont stockés dans le tableau @ARGV et pour accéder à l'argument n on utilise $ARGV[n].
    Tu récupères le nom du fichier ainsi que le mot clé dans des variables:
    my $File = $ARGV[0];
    my $Word = $ARGV[1];

    Tu ouvres ton fichier et tu le lis ligne par ligne en y recherchant ton mot clé
    if ( $ligne =~ /$Word/i){} le i permet d'ignorer la case
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # Ouverture du fichier
    #----------------------
    open (File,$File)  or die "Can't open file\n";
     
    # Lecture du fichier
    #--------------------
    my $Ligne;
    my $i =0;
    while ($Ligne=<File>)
    {
            $i++;
            if ( $Ligne =~ /$Word/i){ print $i;}
    }
    Voila la façon de procéder, inspire toi s'en.

    Bon travail,

    Jasmine,

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    merci beaucoup jasmine
    c resolu

  5. #5
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Desolée, je ne sais pas car je n'utilise jamais la ligne de commande. Cherche donc dans la doc du forum.

    Jasmine,

  6. #6
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 584
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 584
    Points : 2 031
    Points
    2 031
    Par défaut
    Il faut savoir qu'en Perl, contrairement au C par exemple, le nom du programme en lui-même n'est pas stocké dans les paramètres pouvant être fournis au programme. Il est tout simplement stocké dans la variable $0.

    Donc, lorsqu'en ligne de commande tu tapes ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./monscript fichier motcherher -optiondecasse
    1er argument = fichier
    2ème = motcherché
    3ème = optiondecasse

    Tous ces arguments sont stockés dans la liste @ARGV et tu accèderas à chacun des arguments respectivement par $ARGV[0], $ARGV[1] et $ARGV[2] dans ton cas par exemple.

    Juste pour te montrer ce que tu pourrais avoir au début de ton script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my ($fichier, $mot, $option) = @ARGV;
    print "Fichier à parcourir : $fichier\n";
    print "Mot recherché      : $mot\n";
    print "Option de casse    : $option\n";
    A toi de bien sécuriser les paramètres que ton programme reçoit : il ne faut pas qu'un user puisse taper uniquement le nom du programme sans aucun paramètre et que ton programme fasse son office comme si de rien n'était

    Dans les 3 paramètres dont ton programme a besoin, les 2 premiers sont obligatoires tandis que le 3è est optionnel. Tu pourrais donc avoir un truc comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my ($fichier, $mot, $option) = @ARGV;
     
    if (! $fichier || ! $mot)
    {
        die "Usage : $0 <fichier> <mot recherché> <casse caractère (option)>\n";
    }
    A toi de jouer pour la suite. Surtout si c'est pour un exercice

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Pour traiter des ensemble d'arguments complexes, je conseille d'utiliser un module de la famille Getopt::* sinon ça devient vite le bordel. Getopt::Std et Getopt::Long sont distribués en standard avec Perl et permettent déjà énormément de choses (surtout Getopt::Long).

    --
    Jedaï

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    merci A vous tous je vais essayer de faire tout ca avec des @_ et ARGV
    merci bcq de votre collaboration.

  9. #9
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Jasmine80
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # Ouverture du fichier
    #----------------------
    open (File,$File)  or die "Can't open file\n";
     
    # Lecture du fichier
    #--------------------
    my $Ligne;
    my $i =0;
    while ($Ligne=<File>)
    {
            $i++;
            if ( $Ligne =~ /$Word/i){ print $i;}
    }
    On n'est pas obligé d'utiliser un $i explicite ici, Perl garde la trace de la ligne courante dans le fichier qu'il est en train de lire, dans la variable $. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #! /usr/bin/env perl
    use strict; use warnings;
     
    use version; our $VERSION = qv('v0.0.1');
     
    use Getopt::Std;
    $Getopt::Std::STANDARD_HELP_VERSION = 1;
    my %opts;
    #option -i to ignore case
    getopts('i', \%opts);
     
    HELP_MESSAGE() and exit 1 if @ARGV != 2;
    my ($input_file, $key_word) = @ARGV;
     
    my $rx = $opts{i} ? qr/\Q$key_word\E/i : qr/\Q$key_word\E/;
     
    open my($input), '<', $input_file
      or die "Can't open file\n";
     
    while ( my $line = <$input> ) {
            print $. if $line =~ m/$rx/;
    }
     
    close $input;
     
    sub HELP_MESSAGE {
        print STDERR <<EOU;
    usage : script.pl [-i] input_file keyword
     
    This program will print the line number in the input file where
    the keyword is present.
     
    Options :
      -i  Ignore case for the keyword search
    EOU
    }
     
    sub VERSION_MESSAGE {
        print STDERR "version : $VERSION\n";
    }
     
    __END__
    --
    Jedaï

Discussions similaires

  1. besoin d'aide sur les expressions regulieres
    Par gecko753 dans le forum C++Builder
    Réponses: 4
    Dernier message: 22/05/2007, 11h31
  2. aide : Expression reguliere
    Par piff62 dans le forum Langage
    Réponses: 2
    Dernier message: 21/12/2006, 09h37
  3. Aide sur expression Reguliere
    Par chaser_T dans le forum Langage
    Réponses: 2
    Dernier message: 09/10/2006, 15h19
  4. Réponses: 4
    Dernier message: 30/06/2006, 11h25
  5. Besoin d'aide pour une expression reguliere
    Par Jim_Nastiq dans le forum Langage
    Réponses: 5
    Dernier message: 10/04/2006, 09h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo