Visualizzazione dei risultati da 1 a 6 su 6

Discussione: [Perl]Eseguire script

  1. #1
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206

    [Perl]Eseguire script

    Ciao raga,
    come faccio a richiamare ed eseguire uno script esterno?

    del tipo, ho questo codice:
    codice:
    #!/usr/bin/perl
    
    while(1)
    {
      print "Scegli cosa fare:\n";
      print "\nInserisci\t\ti";
      print "\nRicerca\t\tr";
      print "\nAnnulla\t\tu";
      print "\nLa scelta è: ";
      $c=<STDIN>;
      if($c=~/[nI]/) 
      if($c=~/[nR]/) 
      if($c=~/[uU]/){exit(0);}
    }
    per le due scelte "i" ed "r" (quelle in bold) vorrei che eseguisse 2 script esterni cioè "insert.pl" e "search.pl"
    come posso fare?

  2. #2
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206

    Re: [Perl]Eseguire script

    Originariamente inviato da Aki
    Ciao raga,
    come faccio a richiamare ed eseguire uno script esterno?

    del tipo, ho questo codice:
    codice:
    #!/usr/bin/perl
    
    while(1)
    {
      print "Scegli cosa fare:\n";
      print "\nInserisci\t\ti";
      print "\nRicerca\t\tr";
      print "\nAnnulla\t\tu";
      print "\nLa scelta è: ";
      $c=<STDIN>;
      if($c=~/[nI]/) 
      if($c=~/[nR]/) 
      if($c=~/[uU]/){exit(0);}
    }
    per le due scelte "i" ed "r" (quelle in bold) vorrei che eseguisse 2 script esterni cioè "insert.pl" e "search.pl"
    come posso fare?
    se non erro ragionando potrei includere in subroutine tutti gli script esterni, ma in questo caso come le richiamo le sub?

  3. #3
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    ciao
    ho risolto così:
    codice:
    #!/usr/bin/perl
    
    while(1)
    {
      print "Scegli cosa fare:";
      print "\nInserisci\t\ti";
      print "\nRicerca\t\tr";
      print "\nAnnulla\t\tu\n";
      print "La scelta è: ";
      $c=<STDIN>;
      if($c=~/[iI]/){insert()}
      if($c=~/[rR]/){print "Pippo";}
      if($c=~/[uU]/){exit(0);}
    }
    
    sub insert()
    {
      print "\n\n\t\tNuovo Utente\n\n";
      print "\n\nInserisci nome e cognome:\t";
      $nome=<STDIN>;
      chop $nome;
      print "\n\nInserisci il numero telefonico:\t";
      $numero=<STDIN>;
      chop $numero;
      print "\n\nInserisci l'indirizzo:\t";
      $indirizzo=<STDIN>;
      open FILE,">>./agenda.dat";
      print FILE "$nome:$numero:$indirizzo";
    }

  4. #4
    se non ricordo male (sono un pò di anni che ho accantonato il PERL), per chiamare routine presenti in file differenti si fa così:
    codice:
    # file principale "main.pl"
    
    #!/usr/bin/perl
    
    while(1)
    {
      print "Scegli cosa fare:";
      print "\nInserisci\t\ti";
      print "\nRicerca\t\tr";
      print "\nAnnulla\t\tu\n";
      print "La scelta è: ";
      $c=<STDIN>;
      if($c=~/[iI]/){
          require "my_insert.pl";
          &my_insert;
      }
      if($c=~/[rR]/){
          print "Pippo";
      }
      if($c=~/[uU]/){
          exit(0);
      }
    }
    codice:
    # file esterno "my_insert.pl"
    
    sub my_insert()
    {
      print "\n\n\t\tNuovo Utente\n\n";
      print "\n\nInserisci nome e cognome:\t";
      $nome=<STDIN>;
      chop $nome;
      print "\n\nInserisci il numero telefonico:\t";
      $numero=<STDIN>;
      chop $numero;
      print "\n\nInserisci l'indirizzo:\t";
      $indirizzo=<STDIN>;
      open FILE,">>./agenda.dat";
      print FILE "$nome:$numero:$indirizzo";
    }
    1;
    P.S. per parlare di PERL c'è il forum apposito.
    Sposto il thread.
    ...Terrible warlords, good warlords, and an english song

  5. #5
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    Originariamente inviato da Johnny_Depp
    se non ricordo male (sono un pò di anni che ho accantonato il PERL), per chiamare routine presenti in file differenti si fa così:
    codice:
    ...
    codice:
    ...
    P.S. per parlare di PERL c'è il forum apposito.
    Sposto il thread.
    ok grassie


  6. #6
    Non facciamo confusione tra due cose molto diverse:

    1- utilizzare codice perl contenuto in subroutine interne, o in file esterni.

    2- utilizzare programmi esterni che siano scritti in perl o altro.

    Nel primo caso si può usare il metodo della subroutine interna:

    codice:
    codice perl...
    miafunzione(parametri);
    ....
    sub miafunzione {
       @parametri = @_
       ....
       return qualcosa;
    }
    o richiamare codice contenuto in file esterni con il comando require come suggerito, oppure creando un modulo e utilizzando
    use NomeModulo;

    Nel secondo caso invece si deve invocare il programma esterno creando un altro processo, fornendogli l'input se richiesto e ricevendo l'output. I metodi possibili sono i seguenti:

    $output = `programmaX parametri`;
    questo metodo esegue il programma esterno passandogli in input i parametri e conserva l'output nella variabile $output. Fatto ciò continua l'esecuzione dello script.

    system("programma", "parametri");
    esegue il programma esterno senza ricevere l'output e prosegue nella sua esecuzione.

    exec("programma parametri");
    esegue il programma esterno e cessa la propria esecuzione.
    Marco Allegretti
    shishii@tiscalinet.it
    Lang: PERL, PHP, SQL.
    Linux user n° 268623 Fedora Core 10, Fedora Core 6, Debian Sarge on mips

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.