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 :

recuperer une varaible bash depuis un script perl


Sujet :

Langage Perl

  1. #1
    Membre confirmé
    Femme Profil pro
    Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Inscrit en
    Mars 2012
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'étude et de développement en bioinformatique en recherche d'emploi
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2012
    Messages : 69
    Par défaut recuperer une varaible bash depuis un script perl
    Bonjour,
    Je crée un qsub et le lance depuis perl. Dans le qsub j'aimerais récupérer la variable ligne1 (rouge) que j'ai besoin de réutiliser a la fin du script perl. Mais je nais pas comment le faire. Quelqu'un pourrait il m'aider. Merci d'avance.
    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
    	
    #generate qsub file and launch it (blastall on data base)
    	my @jobs_id2_1;	
    	my $priority;
    	my $qsuboutfile2_1 = "step2_1_$prefix\_blastall.qsub";
    	open (QSUB,">$prefix/$qsuboutfile2_1")or die "\nError : $qsuboutfile2_1 file could not be created: $!\n";
    	print QSUB qq(#!/bin/bash
    #\$ -S /bin/bash
    #\$ -o $qsuboutfile2_1.out
    #\$ -e $qsuboutfile2_1.err
    #\$ -cwd
    #\$ -q workq
    
    # command(s):
    #hostname >&2
    
    qarray blast.sh | awk '{ \$3}' > id.txt;
    ligne1=`sed -n -e '1p' id.txt`
    );
    
    	close QSUB;
    		
    	#launch qsub job if asked
    	if ($submit eq "yes") {
    		my $dependencies = "-hold_jid ".join(",",@jobs_id1);
    		my $instruction = "cd $prefix/;qsub $dependencies ./$qsuboutfile2_1 | awk '{print \$3}'; ";
    		$jobid=qx{$instruction};
    		chomp $jobid;
    	
    		my @cols = split(/\./,$priority);	
    		my $id = $cols[0];
    		push (@jobs_id2_1,ligne);
    		#push (@jobs_id2_1,$jobid);

  2. #2
    Membre chevronné Avatar de cmcmc
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 316
    Par défaut
    Citation Envoyé par karaudrey88 Voir le message
    Bonjour,
    Je crée un qsub et le lance depuis perl. Dans le qsub j'aimerais récupérer la variable ligne1 (rouge) que j'ai besoin de réutiliser a la fin du script perl. Mais je nais pas comment le faire. Quelqu'un pourrait il m'aider. Merci d'avance.
    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
    	
    #generate qsub file and launch it (blastall on data base)
    	my @jobs_id2_1;	
    	my $priority;
    	my $qsuboutfile2_1 = "step2_1_$prefix\_blastall.qsub";
    	open (QSUB,">$prefix/$qsuboutfile2_1")or die "\nError : $qsuboutfile2_1 file could not be created: $!\n";
    	print QSUB qq(#!/bin/bash
    #\$ -S /bin/bash
    #\$ -o $qsuboutfile2_1.out
    #\$ -e $qsuboutfile2_1.err
    #\$ -cwd
    #\$ -q workq
    
    # command(s):
    #hostname >&2
    
    qarray blast.sh | awk '{ \$3}' > id.txt;
    ligne1=`sed -n -e '1p' id.txt`
    );
    
    	close QSUB;
    		
    	#launch qsub job if asked
    	if ($submit eq "yes") {
    		my $dependencies = "-hold_jid ".join(",",@jobs_id1);
    		my $instruction = "cd $prefix/;qsub $dependencies ./$qsuboutfile2_1 | awk '{print \$3}'; ";
    		$jobid=qx{$instruction};
    		chomp $jobid;
    	
    		my @cols = split(/\./,$priority);	
    		my $id = $cols[0];
    		push (@jobs_id2_1,ligne);
    		#push (@jobs_id2_1,$jobid);
    si c'est toi qui génère le QSUB ( qui si je comprends bien est un script), est-ce que ça ne serait pas plus simple, au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ligne1=`sed -n -e '1p' id.txt`
    d'écrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n -e '1p' id.txt > blablabla.dat
    puis de lire blablabla.dat dans le script perl une fois que le script a rendu la main ?

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 360
    Par défaut
    Bonjour,

    J'irai même plus loin que cmcmc, en demandant pourquoi ne pas lire carrément la première ligne du fichier id.txt depuis le perl puisque c'est ce que fait ici, la commande sed ?

    Personnellement, je trouve qu'il y a ici une surutilisation de commande tel que sed et awk (il me semblait que perl les englobait)

  4. #4
    Membre chevronné Avatar de cmcmc
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 316
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Bonjour,

    J'irai même plus loin que cmcmc, en demandant pourquoi ne pas lire carrément la première ligne du fichier id.txt depuis le perl puisque c'est ce que fait ici, la commande sed ?

    Personnellement, je trouve qu'il y a ici une surutilisation de commande tel que sed et awk (il me semblait que perl les englobait)
    Tu as bien entendu raison. Ceci dit, je peux me tromper mais j'avais l'impression ici que Perl était plutôt utilisé comme un langage de colle entre composants indépendants, potentiellement développés et utilisés ailleurs par des non-perliens, donc j'ai répondu d'un point de vue système et non Perl...

  5. #5
    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
    Billets dans le blog
    1
    Par défaut
    Mouais, bien sûr que l'on peut encore utiliser Perl comme un langage de colle, comme dans les années 1980 ou 1990, mais c'est tout de même dommage de nos jours, maintenant que Perl est devenu (depuis bientôt 20 ans) un vrai langage de programmation complet et incroyablement riche. Il n'y a rien dans sed ou awk que Perl ne puisse pas faire (et la plupart du temps bien mieux).

    Cela dit, le shell Unix conserve au moins un gros attrait que je ne me prive pas d'utiliser: la capacité bien pratique d'utiliser des pipes pour enchaîner des commandes ou des redirections vers des fichiers. Par exemple, j'utilise encore très fréquemment des scripts shell Unix comme programme de lancement principal de mes traitements, ne serait-ce que parce qu'ils me permettent de rediriger de très gros sorts Unix de mes fichiers en entrée vers un programme Perl (même si mes programmes Perl assurent 95 ou 99% de la logique fonctionnelle du programme, commencer par un sort Unix pour trier un fichier de 50 ou 100 millions de lignes est souvent la meilleure solution pour moi). Du coup, puisque que j'ai presque toujours un peu de shell (du moins quand je travaille sous Unix), il m'arrive encore, bien qu'assez rarement, d'utiliser du sed ou du awk depuis sh, ksh ou bash. Mais du sed ou du awk (ou cut ou autre) depuis un programme Perl, je ne pense pas (sauf oubli) avoir fait cela depuis dix ans, rien ne me semble le justifier même pour un débutant ayant une connaissance limitée de Perl.

Discussions similaires

  1. Utiliser une DLL depuis un script Perl.
    Par AhyGoon dans le forum Langage
    Réponses: 1
    Dernier message: 07/04/2011, 10h55
  2. appler une page web depuis un script cgi
    Par Bestop dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 26/08/2006, 11h09
  3. Réponses: 2
    Dernier message: 15/08/2005, 20h54
  4. Réponses: 6
    Dernier message: 23/05/2005, 08h33
  5. [web] lancer page HTML depuis un script perl
    Par lilou0210 dans le forum Web
    Réponses: 7
    Dernier message: 05/11/2004, 16h04

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