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 :

passer un fichier en parametre à une fonction


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Par défaut passer un fichier en parametre à une fonction
    Bonjour,
    1) Comment passer un fichier en parametre à une fonction en perl;
    Si quelqu'un à un exemple S'il vous plait.

    2) je veux, dans un fichier, tester si les 6 premiers caractere de chaque ligne sont egaux à la chaine "chaine".
    Si qlq'un peut me donner un coup de pousse svp;
    Merci

  2. #2
    Membre Expert
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Par défaut
    Bonjour,

    1) Le mieux est sans doute d'utiliser des handles lexcicaux, non pas que ce soit impossible sans, mais plutôt que la syntaxe te sera certainement très familière
    Un petit exemple (je précise que j'ai fait deux fonctions dans le but de prouver que ça marche même quand le handle original est hors de portée) :
    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
    #! /usr/bin/perl -w
    use strict;
     
    sub fonc {
    	my $handle = shift;
    	print $handle "Hello World !";
    }
     
    sub main {
    	open (my $fic, '>', 'test.txt') or die "Erreur : $!";
    	fonc($fic);
    	close ($fic);
    }	
     
    main();
    2) Utilise une expression régulière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while (my $ligne = <$fichier>) {
       if ($ligne =~ m/^chaine/) {
          #Code exécuté si les première lettres sont chaines
       } 
    }

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Par défaut
    Bonjour;
    g testé votre code; sous windows ça marche correctement mais sur lunix il me semble que j'ai des probleme sur le chemin du fichier:
    le prog.pl se trouve dans:'/usr/lib/cgi-bin/tp1/donnees/clients.txt'
    et le fichier clients.txt se trouve: '/usr/lib/cgi-bin/tp1/donnees/clients.txt'
    voici ce que j'ai fait mais il n'écrit rien dans le fichier, il reste tjrs vide:

    sub fonc {
    my $handle = shift;
    print $handle "Hello World !";
    }

    sub main {
    open (my $fic, '>', '/usr/lib/cgi-bin/tp1/donnees/clients.txt') or die "Erreur : $!";
    fonc($fic);
    close ($fic);
    }
    main();

    Merci de votre disponibilité

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Par défaut
    Quelqu'un peut'il répondre à cette question precedente?

  5. #5
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    déjà j'écrirais ainsi :
    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
    #! /usr/bin/perl 
    use warnings;
    use strict;
     
    sub fonc {
    	my $handle = shift;
    	print {$handle} "Hello World !";
    }
     
    sub main {
    	open (my $fic, '>', 'test.txt') or die "Erreur : $!";
    	fonc($fic);
    	close ($fic);
    }	
     
    main();
    Ensuite, faut que tu regardes tes logs (/var/logs/error.log )
    N'as tu pas des problemes de droits d'ecriture, etc car tu fais du CGI, bref, regarde tes logs

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2007
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 64
    Par défaut Supprimer une ligne dans un fichier, perl
    Merci ça marche, c'était bien des probleme de droit;

    je veux supprimer une ligne d'un fichier en PERL mais je ne connais pas comment faire pour supprimer une ligne sans derranger les autre.
    chaque ligne est identifiée par ses 6 premiers caracteres.

    Si qlq un peut m'aider svp?

    Merci d'avance

Discussions similaires

  1. [FB3]Passer des parametres à une fonction php
    Par KamaFlex dans le forum Flex
    Réponses: 4
    Dernier message: 08/02/2010, 17h09
  2. Réponses: 3
    Dernier message: 28/11/2005, 12h15
  3. Réponses: 1
    Dernier message: 18/11/2005, 11h38
  4. Passer le résultat (tableau) d'une fonction
    Par coyote90 dans le forum Access
    Réponses: 3
    Dernier message: 10/11/2005, 19h56
  5. passer FILE* en argument d une fonction
    Par Monsieur_Manu dans le forum C
    Réponses: 9
    Dernier message: 10/04/2003, 17h56

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