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 :

Traduire un script shell en perl


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Par défaut Traduire un script shell en perl
    Bonjour tout le monde,

    je suis débutant dans le langage perl , j'ai fait un script en shell et je voudrais le traduire en perl
    Pouvez-vous svp m'aider et rendre cet homme heureux


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/usr/bin/bash
    source /info/varibale_environemet.env
     
    base=BDD
    sql=/info/req1.sql
     
    requete1=$( sqlplus $base $sql )
    En gros déclarer deux variables et lancer une requête sql.

    Merci bcp d'avance.

  2. #2
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    Bonjour smtp2014,

    Pour rendre l'homme heureux, il faudrait que l'homme soit un peu plus loquace sur sa problématique.

    En effet en Perl il y a plusieurs façon de faire... en gros on peut te répondre soit en deux lignes du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Cde = ("sqlplus $base $sql");
    system @Cde;
    ou par un programme complet de plusieurs centaines de lignes si nécessaire...

    Donc suivant qu'il s'agit de l'exo pour les vacances de noël ou de l’interrogation des bases réparties du Pentagone nous pourrons aider l'homme différemment

    Ce qui peut nous aider pour commencer :
    - une petite info sur la nécessité de passer de shell en Perl, l'intérêt, le souci... pour que nous puissions comprendre ta problématique...
    Des infos du genre :
    - Unix, Linux, Windows... ou tout à la fois
    - Une ou plusieurs bases sur la (les) machines
    - MySQL Oracle ...
    - Requête.sql simple, multiple...

    Peut-on avoir un extrait de ce qu'il y a dans source /info/varibale_environemet.env
    Sans Password... bien sûr comme :

    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
     
    export ORACLE_BASE=/ORACLE
    export ORACLE_TERM=vt320
    export TK2DEV=vt320
    export SQL=/ORACLE/admin/em
    export TNS_ADMIN=/etc
    export NLS_DATE_FORMAT='DD/MM/YYYY'
    export NLS_DATE_FORMAT
    export DBA=$DUFOUR/ORA/adm/dba
    export TOOLS=$DUFOUR/ORA/adm/tools
     
    case "$MAC" in
    	aladin)
    	export ORACLE_HOME=/ORACLE/product/8.1.7
    	export SQLPATH=/ORACLE/product/8.1.7/dbs
    	export ORA_NLS=/ORACLE/product/8.1.7/ocommon/nls/admin/data
    	export PATH=$PATH:/ORACLE/product/8.1.7/bin
    	export LD_LIBRARY_PATH=/ORACLE/product/8.1.7/lib
    	export ORACLE_SID=
    	;;
    	melchior)
    	.....................
    	;;
    	gaspard)
    	....................
    	;;
    	balthazar)
    	..........................
    	;;
    	*)
    	.........................
    	;;
    esac
    if [ $WHO = 'oracle' -o $WHO = 'oraold' ]
    then
    	export NLS_LANG=american_america.us7ascii
    else
    	export NLS_LANG=French_France.WE8ISO8859P1
    fi
    export PATH=$PATH:$DBA:$TOOLS
    echo
    echo "\t\t ATTENTION \t ORACLE_SID="$ORACLE_SID
    Sinon tu peux regarder ICI il y a déjà de quoi faire.
    Les exemples Oracle lancent des requêtes stockées sous forme de fichier.sql

    Mais ça ne correspond en rien à ta question ...!?

    @+

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Par défaut
    Merci bcp pour votre réponse chaleureuse.

    en effet je veux juste adapter un script perl qui existe déjà avec ce que j'ai écrit en Shell parce que je maîtrise malheureusement que le Shell.
    l'aidée après avoir bien réfléchi c'est juste :
    il y a un fichier info.txt ( extraction de le requête oracle )
    qui existe dans le répertoire /tmp .

    comment je peux faire un cat info.txt dans un script perl pour que je puisse faire un print dans le script.
    mon script perl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $message ="Bonjour,\n\nVoilà les informations .\n\nBonne réception";
    je veux mettre le contenu du fichier info.txt qui existe dans /tmp juste en dessous du message voila les informations.

    Merci Bcp encore une fois

  4. #4
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    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
    use warnings;
    use strict;
    use utf8;
     
    #===================================================
    #
    # Votre code existant Perl ...
    # ...
    # et si j'ai bien compris
    # auquel vous souhaitez ajouter :
     
    my $message ="Bonjour,\n\nVoilà les informations .\n\nBonne réception";
    print $message;
     
    my @Cde = ("cat /tmp/info.txt");
    system @Cde;
     
    print "\n\nFin du résultat contenu dans le fichier /tmp/info.txt\n\n";
     
    #=================================
    # Si les infos sont toujours dans /tmp/info.txt, si vous ne souhaitez pas paramétrer...
    # Ca doit suffire ?

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2013
    Messages : 53
    Par défaut
    en effet je devrai envoyer par mail le contenu du fichier info.txt et pour cela l'envoie par email prend en charge que la partie my $message

    Où est ce que je peux rajouter le contenu du fichier dans ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $message ="Bonjour,\n\nVoilà les informations .\n\nBonne réception";
    Est ce que cela va suffire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    my @Cde = ("cat /tmp/info.txt");
    system @Cde;
     
    my $message ="Bonjour,\n\nVoilà les informations \n\n@Cde \n\nBonne réception";
    ca veut dire quoi system @Cde;
    Merci

    Citation Envoyé par dmganges Voir le message
    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
    #!/usr/bin/perl
    use warnings;
    use strict;
    use utf8;
     
    #===================================================
    #
    # Votre code existant Perl ...
    # ...
    # et si j'ai bien compris
    # auquel vous souhaitez ajouter :
     
    my $message ="Bonjour,\n\nVoilà les informations .\n\nBonne réception";
    print $message;
     
    my @Cde = ("cat /tmp/info.txt");
    system @Cde;
     
    print "\n\nFin du résultat contenu dans le fichier /tmp/info.txt\n\n";
     
     
     
    #=================================
    # Si les infos sont toujours dans /tmp/info.txt, si vous ne souhaitez pas paramétrer...
    # Ca doit suffire ?

  6. #6
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 452
    Par défaut
    @Cde est tout simplement un tableau.

    Dans notre cas il était possible d'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system "cat /tmp/info.txt";
    J'ai pris l'habitude d'utiliser un tableau, c'est plus propre lorsqu'on doit formatter des variables et les inclure dans la commande...

    Pour l'envoi par mail, il me semble que l'utilisation des modules comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use Mail::IMAPClient;											# Pour accéder aux messageries
    use MIME::Parser;													# Pour parser le message
    ... Dans le programme Perl serait préférable...
    Mail::IMAPClient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my @Cde = ("cat /tmp/info.txt"); system @Cde;
    Ne fait qu'éditer le fichier sur la console de l'utilisateur, si elle est ouverte...
    C'est un cat Unix, c'est TOUT !

Discussions similaires

  1. Exécution d'un script shell sous perl
    Par ysahel dans le forum Langage
    Réponses: 1
    Dernier message: 12/08/2012, 10h39
  2. Script shell ou perl
    Par Jinkas dans le forum Programmation et administration système
    Réponses: 5
    Dernier message: 24/12/2010, 08h01
  3. écrire dans un script shell depuis perl
    Par painouch21 dans le forum Langage
    Réponses: 1
    Dernier message: 10/02/2008, 14h03
  4. Traduction script Korn shell en perl
    Par olemoine dans le forum Linux
    Réponses: 4
    Dernier message: 07/02/2008, 11h13
  5. [HTML & PERL] Appel d'un script shell
    Par mevardy dans le forum Web
    Réponses: 1
    Dernier message: 30/08/2006, 10h17

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