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 :

les fichiers en perl


Sujet :

Langage Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 13
    Points : 10
    Points
    10
    Par défaut les fichiers en perl
    j'ai pu extraire en premier lieu les donnés qui m'interesse d'un fichier hexa.text

    a l'aide de ces ligne de commandes :

    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
    # !/usr/bin/perl -w
     
    use strict;
    use warnings;
     
     
    open LIRE,"/home/sst/Bureau/karim/capture/hexa.txt" or die "fichier in trouvable";
    open ECRIRE,">/home/sst/Bureau/rtp.txt\n", or die "E/S : $!\n";
     
    while(<LIRE>)
     
    {
    if($. % 4 == 3)
    {
    my ($data_135,$data_136, $data_138, $data_139, $data_141, $data_142, $data_168, $data_169, $data_171, $data_172) = (split /|/,$_)[135, 136, 138, 139, 141, 142, 168, 169, 171, 172];
    print ECRIRE "ligne$.   \t    $data_135$data_136 $data_138$data_139$data_141$data_142 $data_168$data_169$data_171$data_172 \n";
    }
    }
    ce que je voudrai bien le savoir c'est comment extraire les deux premiers arguments en les concatenant puis convertir ce nombre hexa en decimal

    (c'est un bout de resultata) exple :

    ligne3 21 a515 4704
    ligne7 21 a516 4704
    ligne11 21 a517 4704
    ligne15 21 a518 4704
    ligne19 60 876c a4e4
    ligne23 21 a519 4704
    ligne27 21 a51a 4704
    ligne31 21 a51b 4704
    ligne35 60 876d a4e5
    ligne39 60 876e a4e6
    trouve = false;
    while (trouve ==true)
    je voudrai exactement analyser la deuxieme colonne
    si $2==60
    first=hex($4);
    chercher d'avantage la seconde apparition de '60' a la colenne 4 ($4)
    second = hex ($4);
    si (second - first==33)
    trouve = true;



    pour le moment chui entrain de programmer cette tache
    je veux juste un coup de main pour que je puisse continuer
    car comme vous le savez chui debutant en perl

    merci bcp

  2. #2
    Invité
    Invité(e)
    Par défaut
    Utilise la balise CODE, on verra mieux...
    Pis c'est quoi la question ...?

  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
    Pour les balises CODE, utilise l'icone dièse dans la barre d'outils.


    Citation Envoyé par karim_khouja Voir le message
    ce que je voudrai bien le savoir c'est comment extraire les deux premiers arguments en les concatenant puis convertir ce nombre hexa en decimal
    Pour concaténer des deux variables, utilise le point
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $concat = $var1.$var2;
    Pour convertir une valeur numérique, regarde sprintf()
    -- Jasmine --

  4. #4
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    j'ai un fichier de ce type exactement

    ligne3 21 a515 4704
    ligne7 21 a516 4704
    ligne11 21 a517 4704
    ligne15 21 a518 4704
    ligne19 60 876c a4e4
    ligne23 21 a519 4704
    ligne27 21 a51a 4704
    ligne31 21 a51b 4704
    ligne35 60 876d a4e5
    ligne39 60 876e a4e6
    et je veux mettre le $4 de chaque ligne qui comporte comme $2=60 dans un tableau
    puis convertir le contenu de tableau de l'hexadecimal vers le decimal
    je suis debutant je sais pas commet introduire les balise code excuser moi

    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
    # !/usr/bin/perl -nwa
     
    use strict;
    use warnings;
     
     
    open LIRE,"/home/sst/Bureau/karim/capture/louati.txt" or die "fichier in trouvable";
    open ECRIRE,">/home/sst/Bureau/rtp.txt\n", or die "E/S : $!\n";
     
    while(<LIRE>)
    {
    if($. % 4 == 3)
    {
    my ($data_135,$data_136, $data_138, $data_139, $data_141, $data_142, $data_168, $data_169, $data_171, $data_172) = (split /|/,$_)[135, 136, 138, 139, 141, 142, 168, 169, 171, 172];
    print ECRIRE "ligne$.   \t    $data_135$data_136 $data_138$data_139$data_141$data_142 $data_168$data_169$data_171$data_172 \n";
    }
    #close (LIRE);
     
    }
     
    open FILE,"/home/sst/Bureau/rtp.txt" or die "E/S : $!\n";
     
    my $table='';
    while( defined( my $line = <FILE> ) ) 
    { 
      $line =~/^\w+\s(\w+)\s\w+\s(\w+)/; # espace comme séparateur
      push (my @table, $4 ) if $2 eq '60';
    print "@table\n";
    }

  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
    Tes balises CODE ne passent pas.
    Il faut les écrire en majuscules ou utiliser l'icône dièse de la barre d'outils (#).


    Regarde sprintf() pour ta conversion numérique et va lire la FAQ sur les tableaux.
    -- Jasmine --

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Le prochain code non visible entrainera le verrouillage du post.

    Merci de votre compréhension!

Discussions similaires

  1. Perl et les fichiers XML
    Par djibril dans le forum Langage
    Réponses: 13
    Dernier message: 16/11/2010, 11h14
  2. Librairies PERL pour les fichier csv
    Par flavia dans le forum Programmation et administration système
    Réponses: 6
    Dernier message: 11/08/2008, 18h41
  3. Réponses: 4
    Dernier message: 31/03/2006, 10h52
  4. tester les fichiers perl sur serveur
    Par delaune dans le forum Langage
    Réponses: 6
    Dernier message: 19/11/2005, 16h50

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