Ho un programma Strawberry Perl che accetta un singolo file come argomento della riga di comando. Come posso impostare le cose in modo che io possa trascinare e rilasciare il file desiderato sul programma Strawberry Perl (o su un wrapper attorno ad esso) e il programma gira con il nome di quel file come argomento?Come si creano i programmi di trascinamento perl per Strawberry Perl?
risposta
In Windows (testato con XP), è possibile creare un file .cmd e semplicemente eseguire il programma Perl con l'argomento di% 1 per passare il nome file sopra, come se fosse eseguito da riga di comando.
perl c:\test.pl %1
Quindi è sufficiente trascinare e rilasciare un file sul file .cmd da eseguire.
Puoi anche rilasciare questo file nella cartella "invia a" e puoi quindi fare clic con il pulsante destro del mouse su "-> invia a" nella shell. –
Frakkle, tu sei l'uomo! Domanda successiva: come posso fare in modo che la finestra della console non si chiuda immediatamente dopo aver visualizzato l'output? :) – skiphoppy
Robert, grazie; Ho un collega che voleva farlo funzionare in questo modo. – skiphoppy
Eeek! Si prega di non creare uno script wrapper/cmd quando non è necessario.
Vai nel tuo Registro di sistema o la vostra finestra di dialogo Tipo di file in Windows, e ridefinire l'azione predefinita Perl dire:
"C:\path-to-perl-folders\perl.exe" "%1" %*
Ciò causerà un doppio clic sul .PL per lanciare perl.exe con il nome del file doppio clic (% 1). Il materiale% * (passando gli argomenti del nome file allo script Perl) è più complicato.
Torna al registro di nuovo (in realtà, non è così spaventoso come la gente pensa) e trova/crea una chiave "shellex" sotto la classe Perl, quindi crea una sottochiave chiamata "DropHandler" con un valore di stringa predefinito di "{86C86720-42A0-1069-A2E8-08002B30309D}" (almeno, questo è il mio DropHandler nella versione USA di Windows XP).
Ciò consente ai file .pl (in realtà, qualsiasi cosa associato alla classe Perl) di avere un gestore di drop che indichi a Explorer cosa fare quando si rilasciano file sullo script .pl. In questo caso, significa semplicemente "eseguire lo script Perl con i file rilasciati come argomenti".
Hmmm, non penso di averlo spiegato molto bene, ma è così che ho impostato Perl (che scappa da un'unità di rete) per una grande organizzazione di ingegneria. Google per Perl e DropHandler, e dovresti essere in grado di ottenere lo script .reg del Registro di sistema per farlo per te.
Buona chiamata! Non ero a conoscenza di questo. Ovviamente, il vantaggio del metodo di script wrapper è che è molto facile da distribuire su altre macchine. Suppongo che ci siano pro e contro per entrambi i metodi, ma questa è una soluzione interessante. – Frakkle
Ecco un'altra alternativa ad un "wrapper", ma richiede una leggera modifica allo script perl:
- Rinominare lo script script.pl a script.cmd.
- Aggiungere il seguente alla parte superiore del file:
@SETLOCAL ENABLEEXTENSIONS
@c:\path\to\perl.exe -x "%~f0" %*
@exit /b %ERRORLEVEL%
#!perl
#line 6
# ...perl script continues here...
Lo script viene eseguito come qualsiasi altro file batch. Le prime tre righe invocano fondamentalmente Perl sul file CMD stesso (%~f0
, che funziona solo se le estensioni CMD sono attive). Il misuratore -x
su perl.exe dice a Perl di saltare tutto fino alla riga #!perl
. "#line 6
" aiuta solo nel debug.
Questa è la mia soluzione preferita quando non so molto del sistema di destinazione (e potrebbe non essere in grado di modificare il registro).
- 1. Come si eseguono programmi con Strawberry Perl?
- 2. Come installare DBD :: Oracle in Strawberry Perl
- 3. Come si creano espressioni regolari Perl in modo dinamico?
- 4. Come compilare uno script Perl su un eseguibile di Windows con Strawberry Perl?
- 5. Ho bisogno della directory Perl bin nel PATH per eseguire programmi perl (su Windows)?
- 6. Posso utilizzare Strawberry Perl e ActiveState Perl contemporaneamente su un computer?
- 7. Programmi Occupato, Esegui C, Python o Perl
- 8. Come utilizzare i moduli beta Perl dagli script Perl beta?
- 9. ZMQ :: LibZMQ3 e fragola perl
- 10. Consigli per l'apprendimento di Perl?
- 11. Come si commenta un'espressione regolare Perl?
- 12. NYTProf Profiler per Perl
- 13. Come si usa SQLite in Perl 6?
- 14. Come si crea un modulo Perl?
- 15. Come si creano i file con JavaScript?
- 16. Come è implementato perl -i * realmente *?
- 17. Perl eccezioni, invece di restituire i valori
- 18. Come confrontare i valori compressi in Perl?
- 19. come ottenere i valori POST in perl
- 20. Hash persistente per i programmi Ruby?
- 21. come utilizzare correttamente i riferimenti perl
- 22. Installare automaticamente la dipendenza perl in perl
- 23. Come posso cancellare i privilegi in Perl?
- 24. Come si cerca un array Perl per una stringa corrispondente?
- 25. Come si creano sottotipi in Moose?
- 26. Esiste uno strumento OCaml per supportare l'utilizzo delle migliori pratiche come il modulo Perl :: Critic di Perl?
- 27. perl test suite per API
- 28. Errore nell'autodie.pm di perl?
- 29. Separatori di directory di gestione Perl
- 30. Interni di stringhe Perl
Credo che dipenda molto più dal sistema operativo che dal linguaggio di programmazione. Quale sistema operativo e versione stai usando? –
@Jack M. - Strawberry Perl è il nuovo perl ufficiale per Windows. Il sistema operativo è quindi implicito nella mia domanda per (presumo) chiunque conosca la risposta. – skiphoppy
@Jack M: ooohhh, brilla! – belgariontheking