Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [Perl] Problema con "system"

    ciao, vorrei eseguire il mio programma python con uno script in perl usando la chiamata system
    Il programma lo eseguo normalmente andando nella cartella dove è contenuto e da terminale digito: python nomeprog.
    Di conseguenza quello che ho fatto è:
    codice:
    @args = ("nomeprog");   #programma da eseguire 
    push(@args,split(/ +/, $param));  #paramentri
    system(@args);
    Tuttavia mi viene dato l'errore seguente: Can't exec "nomeprog": No such file or directory at ./main.pl line 32.

    ho provato anche a mettere @args = ("python nomeprog"); ma niente.
    Dove sbaglio?

  2. #2
    Se lo chiami con quel codice usando però python nomeprog.py che errore ti dà?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Praticamente la stessa cosa:
    Can't exec "python nomeprog": No such file or directory at ./main.pl line 32.

  4. #4
    Nel primo caso, il problema deriva dal fatto che tu hai scritto "nomeprog.py" invece di "./nomeprog.py"; nel secondo caso, se scrivi "python nomeprog.py" la system fallirà, dato che cercherà un eseguibile che si chiama "python nomeprog.py" invece di richiamare python passandogli nomeprog.py come argomento. Per cui hai due soluzioni:
    - o imposti nomeprog.py come eseguibile, inserisci l'adeguata shebang (#!/usr/bin/env python) all'inizio dello script python e usi
    codice:
    @args = ("./nomeprog.py");   #programma da eseguire
    - altrimenti, usa
    codice:
    @args = ("python", "nomeprog.py");   #programma da eseguire
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Sei un grande, ha funzionato grazie!

    Volevo chiedere un'altra cosa, abbastanza inerente a questa, non so però se aprire una nuova discussione.
    Vorrei fare in modo che succeda questo:
    system(programma1)
    system(programma2)
    quando(e solo quando) ha terminato programma 1: system(programma3)
    quando(e solo quando) ha terminato programma 2: system(programma4)

    in C userei fork e waitpid, ma in Perl? Inoltre sarebbe meglio fork o threads? Conta che i programmi da eseguire devono elaborare file di diversi giga (quindi un sacco di tempo e risorse.

  6. #6
    Non saprei dirti, non conosco il Perl... comunque, dato che si tratta di un altro problema, dovresti aprire una nuova discussione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  7. #7
    Ok, ho aperto nuova discussione qui: http://forum.html.it/forum/showthrea...readid=1511290
    grazie mille dell'aiuto!

  8. #8
    Amaro C++, il gusto pieno dell'undefined behavior.

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.