Newsgroup: it.comp.lang.perl
Titolo: Lanciare uno script da dentro uno script


(remove xx...xx to reply) PGP Key 5.5 available
"The 400-MHz Power Mac G3 takes no prisoners during game play" -
http://www.apple.com/powermac/

 lo script originario? :-))
Credo di si.
Cosi' senza vedere il codice, dire che basta che chiudi tutto in una funzione,
eventualmente in un package a parte per evitare inquinamento di variabili,
che prenda come paramentro il file che vuoi elaborare (invece di prenderlo
da @ARGV, come sembrerebbe tu stia facendo).
Ovviamente, ci sarebbe da aprire e chiudere esplicitamente il file (se
invece di @ARGV usavi l'apertura implicita del file o gli davi in pasto lo
STDIN, probabilmente e' per questo che la chiamata con system da problemi). 
Se usi il package, non devi neanche chiamare lo script da un altro file, ma
basta che metti tutto nello stesso file differenziando i package.
Maurizio
-- 
Maurizio M. Munafo' / 
mmmu...@netscape.net
"Consider Phlebas, who was once handsome and tall as you" (T.S.Eliot)

lo script originario? :-))
Non necessariamente, hai due possibili soluzioni.
Immagino bene che tu legga i file passati da @ARGV, ed in questo caso
puoi usare le soluzioni:
AppleScript:
-- my_app contiene il path per la droplet, o il nome se e' aperta
on run
  repeat with i in lista_dei_file_come_path
    set i to i as string
    tell application "Finder" to open file i ¬
      using application my_app
  end repeat
end run
Perl:
Forse ho parlato troppo presto... :-(
In effetti non so come passare parametri di linea utilizzando il 'do'
sotto MacOS (che non ha una linea di comando), al limite dentro la
droplet potresti eseguire lo script sopra, ma sarebbe poco di
guadagnato.
In tutti i casi faresti meglio a prendere il tuo script e farne una
sub, e con correzioni minime (@_ al posto di @ARGV) hai fatto tutto e
metti il for al primo livello, senza bisogno di AppleScript o di altro
(MacPerl e' incommnsurabilmente piu' veloce di AppleScript, e molto
piu' veloce anche dell'AppleScript nativo post-8.5).
------
bale...@dada.it
 
http://zap.to/balestra
 ICQ#:14303012
" Ora mai che i baci tuoi piu' non mi sazian
  cerchero' un'altra donna dentro ai sogni di Tarzan... "

 piu' veloce anche dell'AppleScript nativo post-8.5).
Ciao e grazie a tutti per la risposta rapida...
Ho provato a leggermi la parte sui packages (ho studiato finora solo le
parti di Perl che mi servivano...) e in effetti mi sono accorto che
faccio prima a controllare lo script e a racchiuderlo in un grosso ciclo
FOR. Avevo fatto le cose abbastanza per bene e avevo inizializzato quasi
tutte le variabili quindi dovrei riuscirci in poco tempo salvo legge di
Murphy... :-)
il "do" funziona ma mi effettua solo la prima iterazione del ciclo for
su una serie di file di input:
for $file (@ARGV) {
    print "Processing $file\n";
    do '
trasforma.pl
';
    print "Fine $file\n";
    }
per quanto lunga sia @ARGV viene eseguito solo il primo "do"...
Ciao ciao e grazie ancora,
Fed


per quanto lunga sia @ARGV viene eseguito solo il primo "do"...
Non e' che hai piazzato un qualche exit o return dentro 
trasforma.pl
?


 Non e' che hai piazzato un qualche exit o return dentro 
trasforma.pl
?
No... non mi pare proprio e comunque avevo fatto una prova con, al posto
di 
trasforma.pl
 uno micro-scritp che stampava solo il classico print
"hello world!";... piu' innocuo di cosi'! :-)
Ciao ciao,
