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 :

utilisation de la variable $.


Sujet :

Langage Perl

  1. #1
    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 utilisation de la variable $.
    Bonjour a tous,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	foreach my $rep (@rep_list){
     
    		my $file = $root.$rep.'/s_Study id.txt';
    		if (-f $file){ 
    			open(DATA,$file) or die "Couldn't open file, $!"; 
    			while(my $l = <DATA>){ 
    				next if ($. == 1);
    Je voudrais passer la premiere ligne de chaque fichier ... je ne me souviens plus comment faire ... en faisant des recherche, j'ai retrouve la variable $., mais $. n'est pas remis a zero a chaque nouveau fichier et donc ca ne me convient pas. La je contourne le probleme en utilisant une regexp qui me permet de passer la premiere ligne contenant toujours les meme entetes de colonne ... mais bon, autant apprendre a faire mieux

    D'avance merci pour votre aide

    Jasmine
    -- Jasmine --

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juillet 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2014
    Messages : 84
    Points : 197
    Points
    197
    Par défaut
    Je dirai qu'il faut bêtement rajouter un compteur.
    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
     
    my $cpt = 0;
    foreach my $rep (@rep_list){
    	my $file = $root.$rep.'/s_Study id.txt';
    	if (-f $file){ 
    		open(DATA,$file) or die "Couldn't open file, $!"; 
    		$cpt = 0;
    		while(my $l = <DATA>){
    			if ($cpt == 0){
    				$cpt = 1;
    				next;
    			}
    			#TODO
    		}
    	}
    }
    On pourrait aussi mettre <DATA> dans un tableau, et supprimer le premier élément
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    my @tab = <DATA>;
    shift(@tab);
    foreach my @element(@tab){
        #TODO
    }
    mais le problème viendrait de l'empreinte mémoire si on lit un gros fichier.

  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
    Merci pour ta reponse, mais je me demande si il n'y a pas des variables speciales utilisables, specifiques aux fichiers, pour justement eviter d'utiliser un compteur.
    -- Jasmine --

  4. #4
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    et comme cela ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    open my $IN, "<", "..." or die "Cannot open input file: $!";
    	<$IN>;
    	while (<$IN>) {
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		if (-f $file){ 
    			open my $IN, "<", $file or die "Cannot open input file: $!";
    			<$IN>;
    			while (<$IN>) {
    				my @val = split /\t/, $_ ;
    Oui, merci beaucoup, cela fonctionne ... peux-tu m'expliquer la ligne <$IN> ?
    -- Jasmine --

  6. #6
    Membre éprouvé Avatar de Gardyen
    Homme Profil pro
    Bio informaticien
    Inscrit en
    Août 2005
    Messages
    637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bio informaticien

    Informations forums :
    Inscription : Août 2005
    Messages : 637
    Points : 1 050
    Points
    1 050
    Par défaut
    <$IN> lit simplement une ligne de ton fichier.
    Nous les geeks, c'est pas qu'on a une case en moins, c'est juste qu'on compte à partir de zéro.
    Plus les choses changent, plus elles restent les mêmes

  7. #7
    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
    super, merci
    ... je me souviens qu'il y avait une facon de lire le fichier de la ligne x a z ... je vais essayer de retrouver comment
    -- Jasmine --

  8. #8
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    La méthode suggérée par Gardyen est vraiment la plus simple. Si tu veux sauter les 3 premières lignes de ton fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    open my $IN, "<", "..." or die "Cannot open input file: $!";
    	<$IN> for 1..3;
    	while (<$IN>) {
    	# ...
    C'est aussi plus efficace, pour un gros fichier, que d'ajouter un test sur un compteur qui sera exécuté pour chaque ligne de ce gros fichier.

  9. #9
    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
    Merci a tous pour vos conseils.
    -- Jasmine --

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation d'une Variable(Vb) dans d'autre language
    Par cach dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/02/2005, 12h00
  2. Pl/SQL utilisation d'une variable dans un select
    Par larg dans le forum PL/SQL
    Réponses: 17
    Dernier message: 30/11/2004, 17h08
  3. utilisation d'une variable globale
    Par ZZ dans le forum ASP
    Réponses: 3
    Dernier message: 03/12/2003, 19h11
  4. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23
  5. Réponses: 4
    Dernier message: 05/06/2002, 14h35

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