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

Programmation et administration système Perl Discussion :

Aide svp en perl scripting


Sujet :

Programmation et administration système Perl

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Aide svp en perl scripting
    Bonjour je suis debutant en perl
    j'aimerais executer un script sur mon serveur Asterisk qui me permet de generer un fichier txt comme suit :

    exten=>1234,1,Answer
    exten=>1234,2,AGI(../script.agi)
    exten=>1234,3,Hangup()

    voici mon script :
    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
    #! /usr/bin/perl -w
    use strict;
    use warnings;
     
    my $ligne;
    my $fich1 = "in.txt";
    my $fich2 = "out.txt";
     
    open(F1, "<$fich1") || die "Problème à l\'ouverture : $!";
    open(F2, ">$fich2") || die "Problème à l\'ouverture : $!";
     
     
    while ($ligne = <F1>) 
    {
    	print F2 "exten=>$ligne,1,Answer";
    	print F2 "exten=>$ligne,2,AGI(../script.agi)";
    	print F2 "exten=>$ligne,3,Hangup()";
    	print "\n";
     
    }
     
    close F1 || die "Problème à la fermeture : $!";
    close F2 || die "Problème à la fermeture : $!";
    resultat : a chaque fois y a un saut a la ligne

    exten=>1234
    ,1,Answer
    exten=>1234
    ,2,AGI(../script.agi)
    exten=>1234
    ,3,Hangup()

    ????

  2. #2
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 43
    Points : 91
    Points
    91
    Par défaut
    quand tu lis ton fichier d'entrée ligne par ligne, tu lis aussi le saut de ligne (\n à la fin de la chaine de caractère)
    Tu peux le supprimer avec la focntion 'chomp()'

    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
    #! /usr/bin/perl -w
    use strict;
    use warnings;
     
    my $ligne;
    my $fich1 = "in.txt";
    my $fich2 = "out.txt";
     
    open(F1, "<$fich1") || die "Problème à l\'ouverture : $!";
    open(F2, ">$fich2") || die "Problème à l\'ouverture : $!";
     
    while ($ligne = <F1>)
    {
    chomp( $ligne );
    print F2 "exten=>$ligne,1,Answer";
    print F2 "exten=>$ligne,2,AGI(../camaro/go.agi)";
    print F2 "exten=>$ligne,3,Hangup()";
    print "\n";
     
    }
     
    close F1 || die "Problème à la fermeture : $!";
    close F2 || die "Problème à la fermeture : $!";
    Saaaaluuut Nounou!!

  3. #3
    Candidat au Club
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Mais!
    j'ai testé ça marche pas !!

    le retour a la ligne c pour la lecture des numéros qui sont dans in.txt

    c'est a l’intérieur de la boucle ou y a un problème

  4. #4
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 43
    Points : 91
    Points
    91
    Par défaut
    un fichier au format dos ?
    Le saut de ligne est alors code sur 2 caractères.

    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
    #! /usr/bin/perl -w
    use strict;
    use warnings;
     
    my $ligne;
    my $fich1 = "in.txt";
    my $fich2 = "out.txt";
     
    open(F1, "<$fich1") || die "Problème à l\'ouverture : $!";
    open(F2, ">$fich2") || die "Problème à l\'ouverture : $!";
     
    while ($ligne = <F1>)
    {
    $ligne =~ s/\r\n//;
    print F2 "exten=>$ligne,1,Answer";
    print F2 "exten=>$ligne,2,AGI(../camaro/go.agi)";
    print F2 "exten=>$ligne,3,Hangup()";
    print "\n";
     
    }
     
    close F1 || die "Problème à la fermeture : $!";
    close F2 || die "Problème à la fermeture : $!";
    Saaaaluuut Nounou!!

  5. #5
    Candidat au Club
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Rien
    Toujours le meme soucis ça retourne a la ligne

  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
    en mode bourrin à la ligne 14
    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 averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Points : 406
    Points
    406
    Par défaut
    Sinon tu peu essayer avec
    \s équivaut à [\t\n\f\r]

  8. #8
    Candidat au Club
    Inscrit en
    Juillet 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2011
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Merci
    Là c'est bon !!!
    Pouvez vous m'expliquer un peu ce que ça vx dire" $ligne =~s/\s+$//;" !!!!!

    mais aussi a la fin j'ai ajouter un print F2 "\n" mais ça marche pas

    exten=>1111,1,Answer
    exten=>1111,2,AGI(../script.agi)
    exten=>1111,3,Hangup()
    exten=>2222,1,Answer
    exten=>2222,2,AGI(../script.agi)
    exten=>2222,3,Hangup()
    exten=>3333,1,Answer
    exten=>3333,2,AGI(../script.agi)
    exten=>3333,3,Hangup()

  9. #9
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2013
    Messages
    247
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2013
    Messages : 247
    Points : 406
    Points
    406
    Par défaut
    Citation Envoyé par mokazo Voir le message
    Là c'est bon !!!
    Pouvez vous m'expliquer un peu ce que ça vx dire" $ligne =~s/\s+$//;" !!!!!
    $ligne =~s/A/B/; -> tu dis de remplacer A par B dans $ligne
    \s+$ : est l'expression régulière qui indique 1 ou plusieurs (+) tabulation, retour ligne (\s)... en fin de phrase(caractère $)

    pour plus de détails regarde le fonctionnement des expressions régulières

    Citation Envoyé par mokazo Voir le message
    mais aussi a la fin j'ai ajouter un print F2 "\n" mais ça marche pas
    dans ton script, ligne 18 tu as mis
    et non

  10. #10
    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
    Différence à noter: la notation [\r\n]+ limite aux caractères de fin de ligne, \s+ éliminera tout espace (au sens large, incluant les retours à la ligne) à la fin de sa ligne.

    comme le dit 6ril23,
    pour plus de détails regarde le fonctionnement des expressions régulières
    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

Discussions similaires

  1. aide pour comprendre des Script perl
    Par la_star160 dans le forum Langage
    Réponses: 2
    Dernier message: 17/07/2008, 20h40
  2. [MySQL] transmettre les données d'un formulaire à un script php à l'aide svp
    Par momoh dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/04/2007, 15h30
  3. De l'aide SVP un petit bogue de script une reconnaissance confuse
    Par richard77 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/05/2006, 14h03
  4. A l'aide svp j'ai de gros problemes sur un script php
    Par schtek2 dans le forum Langage
    Réponses: 1
    Dernier message: 24/04/2006, 01h25
  5. Réponses: 9
    Dernier message: 10/02/2006, 17h24

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