Questo è il comando perlwin32 che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS
PROGRAMMA:
NOME
perlwin32 - Perl sotto Windows
SINOSSI
Queste sono le istruzioni per la creazione di Perl in Windows 2000 e versioni successive.
DESCRIZIONE
Prima di iniziare, dovresti dare un'occhiata al file README che si trova nel livello superiore
directory in cui è stata estratta la distribuzione Perl. Assicurati di leggere e capire
i termini in base ai quali questo software viene distribuito.
Assicurati anche di leggere "BUG E AVVISI" di seguito per le limitazioni note di questa porta.
Il file INSTALL nel livello superiore di perl contiene molte informazioni che sono rilevanti solo per
persone che costruiscono Perl su sistemi simili a Unix. In particolare, puoi tranquillamente ignorare qualsiasi
informazioni che parlano di "Configura".
Potresti anche voler dare un'occhiata a un'altra opzione per creare un perl su cui funzionerà
Windows: il file README.cygwin, che fornisce un diverso insieme di regole per cui creare un perl
Finestre. Questo metodo probabilmente ti consentirà di creare un perl più compatibile con Unix, ma
dovrai anche scaricare e utilizzare vari altri supporti per il tempo di compilazione e il runtime
software descritto in quel file.
Questo insieme di istruzioni ha lo scopo di descrivere un cosiddetto port "nativo" di Perl al
Piattaforma Windows. Ciò include i sistemi operativi Windows sia a 32 bit che a 64 bit. Il
Perl risultante non richiede software aggiuntivo per l'esecuzione (a parte quello fornito con il tuo
sistema operativo). Attualmente, questa porta è in grado di utilizzare uno dei seguenti
compilatori sull'architettura Intel x86:
Microsoft Visual C++ versione 6.0 o successiva
Compilatore Intel C++ (sperimentale)
Gcc di mingw.org gcc versione 3.4.5 o successiva
Gcc di mingw-w64.org gcc versione 4.4.3 o successiva
Nota che gli ultimi due di questi sono in realtà progetti concorrenti entrambi consegnati completi
toolchain gcc per MS Windows:
<http://mingw.org>
Fornisce la toolchain gcc mirata alla piattaforma Windows a 32 bit.
<http://mingw-w64.org>
Offre toolchain gcc per piattaforme Windows a 64 bit e Windows a 32 bit
(nonostante il nome del progetto "mingw-w64" non sono solo orientati a 64 bit). consegnano
i compilatori gcc nativi e i compilatori incrociati supportati anche da perl's
makefile.
Anche i compilatori Microsoft Visual C++ vengono ora distribuiti gratuitamente. Sono disponibili
come "Visual C++ Toolkit 2003" o "Visual C++ 2005-2013 Express Edition" (e anche come parte
di ".NET Framework SDK") e sono gli stessi compilatori forniti con "Visual C++ .NET
2003 Professional" o "Visual C++ 2005-2013 Professional" rispettivamente.
Questa porta può anche essere costruita su IA64/AMD64 usando:
Microsoft Platform SDK novembre 2001 (compilatore e strumenti a 64 bit)
Compilatore MinGW64 (gcc versione 4.4.3 o successiva)
L'SDK di Windows può essere scaricato dahttp://www.microsoft.com/>. Il compilatore MinGW64
è disponibile suhttp://mingw-w64.org>. Quest'ultimo è in realtà un targeting per più compilatori
Win64. C'è anche un compilatore ridotto (no java o gfortran) adatto per la compilazione
perla disponibile su:http://strawberryperl.com/package/kmx/64_gcctoolchain/>
NOTA: se stai usando un compilatore a 32 bit per compilare perl su un sistema operativo Windows a 64 bit
system, allora dovresti impostare la variabile d'ambiente WIN64 su "undef". Inoltre, il tagliato
il compilatore down passa i test solo quando USE_ITHREADS *= define (al contrario di undef) e quando
la riga CFG *= Debug è commentata.
Questa porta supporta completamente MakeMaker (l'insieme di moduli utilizzato per creare estensioni per
perla). Pertanto, dovresti essere in grado di creare e installare la maggior parte delle estensioni trovate nel
siti CPAN. Vedere "Suggerimenti per l'uso di Perl su Windows" di seguito per suggerimenti generali al riguardo.
Configurazione Up Perl on Windows
Make
Hai bisogno di un programma "make" per costruire i sorgenti. Se stai usando Visual C++ o il
Strumenti di Windows SDK, nmake funzionerà. Le compilazioni che utilizzano gcc necessitano di dmake.
dmake è un make disponibile gratuitamente che ha caratteristiche macro molto carine e
parallelabilità.
Un port di dmake per Windows è disponibile da:
<http://search.cpan.org/dist/dmake/>
Recupera e installa dmake da qualche parte sul tuo percorso.
Shell di comando
Usa la shell "cmd" predefinita fornita con Windows. Alcune versioni del popolare
La shell 4DOS/NT presenta incompatibilità che potrebbero causare problemi. Se la compilazione fallisce
sotto quella shell, prova a costruire di nuovo con la shell cmd.
Assicurati che il percorso della directory di compilazione non contenga spazi. La build di solito
funziona in questa circostanza, ma alcuni test falliranno.
Microsoft Visual C ++
Il nmake fornito con Visual C++ sarà sufficiente per la creazione. Visual C lo richiede
alcune cose devono essere impostate nella console prima che Visual C venga eseguito correttamente. Produrre
una console sarà in grado di eseguire il compilatore C, sarà necessario prima eseguire il
File "vcvars32.bat" da compilare per x86-32 e per x86-64 "vcvarsall.bat x64" o
"vcvarsamd64.bat". In un'installazione tipica di un prodotto del compilatore Microsoft C, questi batch
i file saranno già nella variabile d'ambiente "PATH", quindi puoi semplicemente digitarli
senza un percorso assoluto nella tua console. Se hai bisogno di trovare il percorso assoluto per
il file batch, di solito si trova da qualche parte come C:\Programmi\Microsoft Visual
Studio\VC98\Bin. Con alcuni prodotti Microsoft C più recenti (rilasciati dopo il 2004), il
installer metterà un collegamento nel menu di avvio per avviare una nuova finestra della console con
la console già configurata per la tua architettura di destinazione (x86-32 o x86-64 o IA64).
Con i compilatori più recenti, puoi anche utilizzare i file batch più vecchi, se lo desideri.
Puoi anche usare dmake per creare usando Visual C++; a condizione, tuttavia, di impostare OSRELEASE
a "microsft" (o qualunque sia il nome della directory sotto la quale il Visual C dmake
la configurazione vive) nel tuo ambiente e modifica win32/config.vc per cambiare
"make=nmake" in "make=dmake". Quest'ultimo passaggio è essenziale solo se si desidera utilizzare
dmake come make predefinito per creare estensioni utilizzando MakeMaker.
Edizione rapida di Microsoft Visual C++ 2008-2013
Queste versioni gratuite di Visual C++ 2008-2013 Professional contengono gli stessi compilatori
e linker forniti con le versioni complete e contengono anche tutto il necessario per
build Perl, invece di richiedere un download separato dell'SDK di Windows come in precedenza
versioni lo facevano.
Questi pacchetti possono essere scaricati cercando nel Centro download all'indirizzo
<http://www.microsoft.com/downloads/search.aspx?displaylang=it>. (Fornire esatto
i collegamenti a questi pacchetti si sono rivelati un compito inutile perché i collegamenti continuano a cambiare
così spesso.)
Installa Visual C++ 2008-2013 Express, quindi configura il tuo ambiente utilizzando, ad es
C:\Programmi\Microsoft Visual Studio 12.0\Common7\Tools\vsvars32.bat
(supponendo che sia stata scelta la posizione di installazione predefinita).
Perl dovrebbe ora creare usando il file win32/Makefile. Dovrai modificare quel file in
impostare prima CCTYPE su uno dei MSVC90FREE-MSVC120FREE.
Edizione rapida di Microsoft Visual C++ 2005
Questa versione gratuita di Visual C++ 2005 Professional contiene lo stesso compilatore e
linker fornito con la versione completa, ma non contiene tutto il necessario per
costruire Perl.
Dovrai anche scaricare "Windows SDK" (il "Core SDK" e "MDAC SDK"
componenti sono necessari) per più file di intestazione e librerie.
Questi pacchetti possono essere scaricati entrambi cercando nel Centro download all'indirizzo
<http://www.microsoft.com/downloads/search.aspx?displaylang=it>. (Fornire esatto
i collegamenti a questi pacchetti si sono rivelati un compito inutile perché i collegamenti continuano a cambiare
così spesso.)
Prova a ottenere l'ultima versione di Windows SDK. A volte questi pacchetti contengono
una particolare versione del sistema operativo Windows nel loro nome, ma in realtà funziona su altre versioni del sistema operativo
pure. Ad esempio, "Windows Server 2003 R2 Platform SDK" funziona anche su Windows XP
SP2 e Windows 2000.
Installare prima Visual C++ 2005, quindi Platform SDK. Configura il tuo ambiente come
segue (supponendo che siano stati scelti i percorsi di installazione predefiniti):
SET PlatformSDKDir=C:\Programmi\Microsoft Platform SDK
SET PATH=%SystemRoot%\system32;%SystemRoot%;C:\Programmi\Microsoft Visual Studio 8\Common7\IDE;C:\Programmi\Microsoft Visual Studio 8\VC\BIN;C:\Programmi\Microsoft Visual Studio 8\Common7\Tools;C:\Programmi\Microsoft Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Programmi\Microsoft Visual Studio 8\VC\VCPackages;%PlatformSDKDir%\Bin
SET INCLUDE=C:\Programmi\Microsoft Visual Studio 8\VC\INCLUDE;%PlatformSDKDir%\include
SET LIB=C:\Programmi\Microsoft Visual Studio 8\VC\LIB;C:\Programmi\Microsoft Visual Studio 8\SDK\v2.0\lib;%PlatformSDKDir%\lib
SET LIBPATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
(Potrebbe essere necessario impostare PlatformSDKDir in modo diverso a seconda della versione in uso
stiamo usando. Versioni precedenti installate in "C:\Programmi\Microsoft SDK", mentre il
le ultime versioni si installano in posizioni specifiche della versione come "C:\Program
File\Microsoft Platform SDK per Windows Server 2003 R2".)
Perl dovrebbe ora creare usando il file win32/Makefile. Dovrai modificare quel file in
set
CCTYPE = MSVC80FREE
e per impostare CCHOME, CCINCDIR e CCLIBDIR secondo la configurazione dell'ambiente sopra.
Kit di strumenti Microsoft Visual C++ 2003
Questo toolkit gratuito contiene lo stesso compilatore e linker forniti con Visual C++ .NET
2003 Professional, ma non contiene tutto il necessario per compilare Perl.
Dovrai anche scaricare il "Platform SDK" (il "Core SDK" e "MDAC SDK"
componenti necessari) per file di intestazione, librerie e rc.exe e ".NET Framework
SDK" per più librerie e nmake.exe. Nota che quest'ultimo (che include anche il
compilatore e linker gratuiti) richiede che ".NET Framework Redistributable" sia
installato per primo. Può essere scaricato e installato separatamente, ma è incluso in
comunque il "Visual C++ Toolkit 2003".
Questi pacchetti possono essere tutti scaricati cercando nel Centro download all'indirizzo
<http://www.microsoft.com/downloads/search.aspx?displaylang=it>. (Fornire esatto
i collegamenti a questi pacchetti si sono rivelati un compito inutile perché i collegamenti continuano a cambiare
così spesso.)
Prova a ottenere l'ultima versione di Windows SDK. A volte questi pacchetti contengono
una particolare versione del sistema operativo Windows nel loro nome, ma in realtà funziona su altre versioni del sistema operativo
pure. Ad esempio, "Windows Server 2003 R2 Platform SDK" funziona anche su Windows XP
SP2 e Windows 2000.
Installare prima Toolkit, poi Platform SDK e infine .NET Framework SDK. Impostare
il tuo ambiente come segue (supponendo che siano stati scelti i percorsi di installazione predefiniti):
SET PlatformSDKDir=C:\Programmi\Microsoft Platform SDK
SET PATH=%SystemRoot%\system32;%SystemRoot%;C:\Programmi\Microsoft Visual C++ Toolkit 2003\bin;%PlatformSDKDir%\Bin;C:\Programmi\Microsoft.NET\SDK\v1.1\Bin
SET INCLUDE=C:\Programmi\Microsoft Visual C++ Toolkit 2003\include;%PlatformSDKDir%\include;C:\Programmi\Microsoft Visual Studio .NET 2003\Vc7\include
SET LIB=C:\Programmi\Microsoft Visual C++ Toolkit 2003\lib;%PlatformSDKDir%\lib;C:\Programmi\Microsoft Visual Studio .NET 2003\Vc7\lib
(Potrebbe essere necessario impostare PlatformSDKDir in modo diverso a seconda della versione in uso
stiamo usando. Versioni precedenti installate in "C:\Programmi\Microsoft SDK", mentre il
le ultime versioni si installano in posizioni specifiche della versione come "C:\Program
File\Microsoft Platform SDK per Windows Server 2003 R2".)
Mancheranno ancora diversi file richiesti:
· cvtres.exe è richiesto da link.exe quando si utilizza un file .res. In realtà è
installato da .NET Framework SDK, ma in una posizione come la seguente:
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322
Copialo da lì in %PlatformSDKDir%\Bin
· lib.exe è normalmente usato per costruire librerie, ma link.exe con il / lib opzione
funziona anche, quindi cambia win32/config.vc per usarlo invece:
Cambia la lettura della riga:
ar='lib'
di:
ar='link / lib'
Potrebbe anche essere utile creare un file batch chiamato lib.bat in C:\Program
Files\Microsoft Visual C++ Toolkit 2003\bin contenente:
@ Echo off
link / lib %*
a beneficio di qualsiasi modulo di estensione C cattivo che potresti voler costruire
successive che fanno riferimento esplicitamente a "lib" piuttosto che prendere il loro valore da
$Configura{ar}.
· setargv.obj è necessario per compilare perlglob.exe (e perl.exe se USE_SETARGV
l'opzione è abilitata). Platform SDK fornisce questo file oggetto in formato sorgente in
%PlatformSDKDir%\src\crt. Copia setargv.c, cruntime.h e internal.h da lì a
una posizione temporanea e creare setargv.obj usando
cl.exe /c /I. /D_CRTBLD setargv.c
Quindi copia setargv.obj in %PlatformSDKDir%\lib
In alternativa, se non hai bisogno di perlglob.exe e non hai bisogno di abilitare il
Opzione USE_SETARGV quindi puoi tranquillamente rimuovere tutte le menzioni di $(GLOBEXE) da
win32/Makefile e setargv.obj non saranno comunque richiesti.
Perl dovrebbe ora creare usando il file win32/Makefile. Dovrai modificare quel file in
set
CCTYPE = MSVC70FREE
e per impostare CCHOME, CCINCDIR e CCLIBDIR secondo la configurazione dell'ambiente sopra.
Compilatore Microsoft Platform SDK a 64 bit
Il nmake fornito con Platform SDK sarà sufficiente per la creazione di Perl. Assicurarsi
stai costruendo all'interno di una delle shell "Build Environment" disponibili dopo di te
installare Platform SDK dal menu Start.
MinGW versione 3 con gcc
Perl può essere compilato con gcc dalla versione 3 di MinGW e successive (usando gcc 3.4.5 e
dopo). Può essere scaricato qui:
<http://www.mingw.org/>
Hai anche bisogno di dmake. Vedi "Crea" sopra su come ottenerlo.
Compilatore Intel C++
È stato aggiunto il supporto sperimentale per l'utilizzo del compilatore Intel C++. Modifica win32/Makefile
e scegli il CCTYPE corretto per il Visual C in cui è stato installato Intel C. Anche
decommentare __ICC per abilitare il supporto di Intel C su Visual C. Per impostare la build
ambiente, dal menu Start eseguire la modalità IA-32 Visual Studio 20__ o Intel 64 Visual
Modalità Studio 20__ a seconda dei casi. Quindi esegui nmake come al solito in quella finestra del prompt.
È stato testato solo il compilatore Intel C++ v12.1. Altre versioni probabilmente funzioneranno.
L'utilizzo del compilatore Intel C++ invece di Visual C ha il vantaggio della compatibilità con C99
che è necessario per alcuni moduli CPAN XS, pur mantenendo la compatibilità con Visual C
codice oggetto e infrastruttura di debug Visual C a differenza di GCC.
Costruzione
· Assicurati di essere nella sottodirectory "win32" sotto il livello superiore di perl. Questa directory
contiene un "Makefile" che funzionerà con le versioni di nmake fornite con Visual C++
o Windows SDK e un dmake "makefile.mk" che funzionerà per tutti i supporti
compilatori. I valori predefiniti nel makefile dmake sono impostati per compilare utilizzando MinGW/gcc.
· Modifica il makefile.mk (o Makefile, se stai usando nmake) e cambia i valori di
INST_DRV e INST_TOP. Puoi anche abilitare vari flag di build. Questi sono spiegati
nei makefile.
Nota che generalmente non è una buona idea provare a costruire un perl con INST_DRV e
INST_TOP impostato su un percorso già esistente da una build precedente. In particolare, questo
può causare problemi con il test lib/ExtUtils/t/Embed.t, che tenta di creare un
programma di test e potrebbe finire per essere compilato sulla directory lib/CORE del perl installato
piuttosto che quello in prova.
Dovrai assicurarti che CCTYPE sia impostato correttamente e che CCHOME punti a
ovunque tu abbia installato il tuo compilatore.
Se costruisci con il cross-compiler fornito da mingw-w64.org dovrai rimuovere il commento
la riga che imposta GCCCROSS nel makefile.mk. Fallo solo se è il cross-
compilatore - cioè solo se la cartella bin non contiene un gcc.exe. (Il cross-compilatore
non fornisce un gcc.exe, g++.exe, ar.exe, ecc. Invece, tutti questi eseguibili
sono preceduti da 'x86_64-w64-mingw32-'.)
Il valore predefinito per CCHOME nei makefile per Visual C++ potrebbe non essere corretto per
alcune versioni. Assicurati che l'impostazione predefinita esista e sia valida.
Potrebbe anche essere necessario commentare la riga "DELAYLOAD = ..." nel Makefile se lo sei
utilizzando VC++ 6.0 senza il service pack più recente e il linker segnala un errore interno
errore.
Se vuoi creare alcune estensioni del core staticamente nella dll di perl, specificale nel
Macro STATIC_EXT.
NOTA: l'opzione di compilazione USE_64_BIT_INT non è supportata con Visual C++ 32 a 6.0 bit
compilatore.
Assicurati di leggere attentamente le istruzioni vicino alla parte superiore dei makefile.
· Digita "dmake" (o "nmake" se stai usando quel make).
Questo dovrebbe costruire tutto. In particolare, creerà perl.exe, perl522.dll a
il livello superiore perl e varie altre dll di estensione nella directory lib\auto. Se
la build fallisce per qualsiasi motivo, assicurati di aver eseguito correttamente i passaggi precedenti.
Se sei abbastanza avanzato con la creazione di codice C, ecco un suggerimento per accelerare
building perl e il successivo "make test". Cerca di mantenere la tua variabile d'ambiente PATH
con il minor numero di cartelle possibile (ricordati di conservare le cartelle del tuo compilatore C
là). "C:\WINDOWS\system32" o "C:\WINNT\system32" a seconda della versione del sistema operativo
dovrebbe essere la prima cartella in PATH, poiché "cmd.exe" è il programma più comunemente lanciato
durante la compilazione e i successivi test.
Testing Perl on Windows
Digita "dmake test" (o "nmake test"). Questo eseguirà la maggior parte dei test dalla suite di test
(molte prove verranno saltate).
Non dovrebbero esserci errori di test.
Se si compila con Visual C++ 2013, tre test attualmente potrebbero non riuscire con l'ora legale
Problemi legati al tempo: t/io/fs.t, cpan/HTTP-Tiny/t/110_mirror.t e lib/File.Copia.t.
gli errori sono causati da bug nel CRT in VC++ 2013 che verranno corretti nelle versioni future
di VC++, come spiegato da Microsoft qui:
.
Nel frattempo, se hai bisogno di funzioni "stat" e "utime" fisse, dai un'occhiata al
Distribuzione CPAN Win32::UTCFileTime.
Se si compila con determinate versioni (es. 4.8.1) di gcc da www.mingw.org allora
est/POSIX/t/ora.t potrebbe fallire il test 17 a causa di un bug noto in quelle build di gcc: vedi
<http://sourceforge.net/p/mingw/bugs/2152/>.
Alcuni errori di test possono verificarsi se si utilizza una shell di comando diversa da quella nativa "cmd.exe",
o se stai costruendo da un percorso che contiene spazi. Quindi non farlo.
Se stai eseguendo i test da una finestra della shell di emacs, potresti vedere errori in op/stat.t.
Esegui "dmake test-notty" in quel caso.
Inoltre, dovresti assicurarti che durante "make test" non disponi di alcuno strumento GNU
pacchetti nel tuo percorso: alcuni toolkit come Unixutils includono alcuni strumenti ("digita" per
esempio) che sovrascrivono quelli di Windows e fanno fallire i test. Rimuovili dal tuo percorso
durante il test per evitare questi errori.
Si prega di segnalare eventuali altri errori come descritto in "BUG E AVVERTENZE".
Installazione of Perl on Windows
Digita "dmake install" (o "nmake install"). Questo metterà il perl appena costruito e il
librerie sotto qualunque cosa "INST_TOP" punti nel Makefile. Installerà anche il
documentazione pod sotto "$INST_TOP\$INST_VER\lib\pod" e versioni HTML dello stesso sotto
"$INST_TOP\$INST_VER\lib\pod\html".
Per usare il Perl che hai appena installato dovrai aggiungere una nuova voce al tuo PATH
variabile d'ambiente: "$INST_TOP\bin", es
imposta PATH=c:\perl\bin;%PATH%
Se hai scelto di decommentare "INST_VER" e "INST_ARCH" nel makefile, l'installazione
la struttura è un po' più complicata e dovrai aggiungere due nuovi componenti PATH
invece: "$INST_TOP\$INST_VER\bin" e "$INST_TOP\$INST_VER\bin\$ARCHNAME", ad es.
imposta PERCORSO=c:\perl\5.6.0\bin;c:\perl\5.6.0\bin\MSWin32-x86;%PATH%
Impiego Suggerimenti per Perl on Windows
variabili ambientali
I percorsi di installazione che imposti durante la compilazione vengono compilati in perl, quindi
non devi fare nulla in più per iniziare a usare quel perl (tranne aggiungere la sua posizione
alla tua variabile PATH).
Se metti le estensioni in posti insoliti, puoi impostare PERL5LIB su un elenco di percorsi
separato da punto e virgola dove vuoi che perl cerchi le librerie. Cercare
descrizioni di altre variabili d'ambiente che puoi impostare in perlrun.
Puoi anche controllare la shell che perl usa per eseguire sistema() e comandi backtick
tramite PERL5SHELL. Vedi perlrun.
Perl non dipende dal registro, ma può cercare determinati valori predefiniti se tu
scegli di metterli lì. Perl tenta di leggere le voci da
"HKEY_CURRENT_USER\Software\Perl" e "HKEY_LOCAL_MACHINE\Software\Perl". Voci in
le prime sovrascrivono le voci della seconda. Una o più delle seguenti voci (di
tipo REG_SZ o REG_EXPAND_SZ) può essere impostato:
lib-$] percorso della libreria standard specifico della versione da aggiungere a @INC
lib percorso della libreria standard da aggiungere a @INC
sitelib-$] percorso della libreria del sito specifico della versione da aggiungere a @INC
Percorso della libreria del sito sitelib da aggiungere a @INC
vendorlib-$] percorso della libreria del fornitore specifico della versione da aggiungere a @INC
percorso della libreria vendorlib da aggiungere a @INC
PERL* fallback per tutte le ricerche %ENV che iniziano con "PERL"
Nota che $] sopra non è letterale. Sostituisci qualsiasi versione di perl che desideri
per onorare quella voce, ad esempio 5.6.0. I percorsi devono essere separati da punto e virgola, come al solito su
Finestre.
Globo di file
Per impostazione predefinita, perl gestisce il globbing dei file utilizzando l'estensione File::Glob, che fornisce
globbing portatile.
Se vuoi che perl utilizzi il globbing che emuli le stranezze delle convenzioni sui nomi dei file DOS,
potresti prendere in considerazione l'utilizzo di File::DosGlob per sovrascrivere l'interno globo()
implementazione. Vedere File::DosGlob per i dettagli.
Utilizzo di Perl dalla riga di comando
Se sei abituato a usare perl da varie shell della riga di comando trovate in UNIX
ambienti, non sarai soddisfatto di ciò che offre Windows tramite a
shell di comando.
La cosa cruciale da capire sull'ambiente Windows è che la riga di comando
digitato viene elaborato due volte prima che Perl lo veda. Innanzitutto, la shell dei comandi
(di solito CMD.EXE) preelabora la riga di comando, per gestire il reindirizzamento, l'ambiente
espansione variabile e posizione dell'eseguibile da eseguire. Quindi, l'eseguibile perl
divide la riga di comando rimanente in singoli argomenti, usando il runtime C
libreria su cui è stato costruito Perl.
È particolarmente importante notare che né la shell né il runtime C fanno nulla
espansioni con caratteri jolly degli argomenti della riga di comando (quindi i caratteri jolly non devono essere citati).
Inoltre, i comportamenti di citazione della shell e del runtime C sono nella migliore delle ipotesi rudimentali
(e potrebbe, se stai usando una shell non standard, essere incoerente). L'unico (utile)
carattere di citazione è la doppia virgoletta ("). Può essere usata per proteggere spazi e altro
caratteri speciali negli argomenti.
La documentazione di Windows descrive le regole di analisi della shell qui:
<http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=vero>
e le regole di analisi del runtime C qui:
<http://msdn.microsoft.com/en-us/library/17w5ykft%28v=VS.100%29.aspx>.
Ecco alcune ulteriori osservazioni basate su esperimenti: Il runtime C si interrompe
argomenti negli spazi e li passa ai programmi in argc/argv. Le virgolette doppie possono essere
utilizzato per impedire la suddivisione degli argomenti contenenti spazi. Puoi mettere un
virgolette doppie in un argomento eseguendo l'escape con una barra rovesciata e racchiudendo il tutto
argomento tra virgolette. La barra rovesciata e la coppia di doppi apici
che circonda l'argomento verrà rimosso dal runtime C.
I caratteri di reindirizzamento del file "<", ">" e "|" può essere citato con doppie virgolette
(anche se ci sono suggerimenti che questo potrebbe non essere sempre vero). Le virgolette singole sono
non trattati come virgolette dalla shell o dal runtime C, non vengono eliminati dal
shell (solo per rendere completamente inutile questo tipo di citazione). Il caret "^" ha anche
è stato osservato comportarsi come un carattere di citazione, ma questo sembra essere un guscio
funzionalità e il cursore non viene rimosso dalla riga di comando, quindi Perl lo vede ancora
(e la fase di runtime C non tratta il caret come un carattere di citazione).
Ecco alcuni esempi di utilizzo della shell "cmd":
Questo stampa due doppi apici:
perl -e "stampa '\"\"' "
Questo fa lo stesso:
perl -e "stampa \"\\\"\\\"\" "
Questo stampa "bar" e scrive "foo" nel file "blurch":
perl -e "print 'pippo'; print STDERR 'bar'" > blurch
Questo stampa "foo" ("bar" scompare nel nulla):
perl -e "print 'pippo'; print STDERR 'bar'" 2> null
Questo stampa "bar" e scrive "foo" nel file "blurch":
perl -e "print 'pippo'; print STDERR 'bar'" 1> blurch
Questo reindirizza "foo" al pager "less" e stampa "bar" sulla console:
perl -e "print 'pippo'; print STDERR 'bar'" | meno
Questo reindirizza "foo\nbar\n" al pager less:
perl -le "print 'pippo'; print STDERR 'bar'" 2>&1 | meno
Questo pipe "foo" al pager e scrive "bar" nel file "blurch":
perl -e "print 'pippo'; print STDERR 'bar'" 2> blurch | meno
Scoprire l'utilità della shell "command.com" su Windows 9x è lasciato come un
esercizio per il lettore :)
Un problema particolarmente dannoso con la shell di comando 4NT per Windows è che
(quasi) tratta sempre un carattere % come se indicasse quell'espansione della variabile d'ambiente
è necessario. Sotto questo guscio è quindi importante raddoppiare sempre qualsiasi %
caratteri che vuoi che Perl veda (ad esempio, per le variabili hash), anche quando
sono citati.
Estensioni degli edifici
Il Comprehensive Perl Archive Network (CPAN) offre una vasta gamma di estensioni, alcune delle quali
che richiedono un compilatore C per essere compilati. Guarda dentrohttp://www.cpan.org/> per saperne di più
informazioni su CPAN.
Nota che non tutte le estensioni disponibili da CPAN potrebbero funzionare in Windows
ambiente; dovresti controllare le informazioni suhttp://www.cpantesters.org/> prima
investire troppi sforzi nel porting di moduli che non si costruiscono prontamente.
La maggior parte delle estensioni (che richiedano o meno un compilatore C) possono essere compilate, testate e
installato con il mantra standard:
perl Makefile.PL
$FARE
Prova $MAKE
$FARE installazione
dove $MAKE è qualsiasi programma 'make' che hai configurato per l'uso di perl. Usa "perl
-V:make" per scoprire di cosa si tratta. Alcune estensioni potrebbero non fornire una suite di test (quindi
"$MAKE test" potrebbe non fare nulla o fallire), ma i più seri lo fanno.
È importante utilizzare un programma "make" supportato e assicurarsi che Config.pm lo sappia
a proposito. Se non hai nmake, puoi ottenere dmake dalla posizione
menzionato in precedenza o ottenere una vecchia versione di nmake secondo quanto riferito disponibile da:
<http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/nmake15.exe>
Un'altra opzione è usare il make scritto in Perl, disponibile da CPAN.
<http://www.cpan.org/modules/by-module/Make/>
Puoi anche usare dmake. Vedi "Crea" sopra su come ottenerlo.
Nota che MakeMaker emette effettivamente makefile con una sintassi diversa a seconda di cosa
'make' pensa che tu stia usando. Pertanto, è importante che uno dei seguenti
valori appare in Config.pm:
make='nmake' # MakeMaker emette la sintassi nmake
make='dmake' # MakeMaker emette la sintassi dmake
qualsiasi altro valore # MakeMaker emette una sintassi make generica
(es. GNU make o Perl make)
Se il valore non corrisponde al programma "make" che desideri utilizzare, modifica Config.pm per correggere
esso.
Se un modulo implementa XSUB, avrai bisogno di uno dei compilatori C supportati. Voi
devi assicurarti di aver impostato l'ambiente per il compilatore per la riga di comando
compilazione prima di eseguire "perl Makefile.PL" o qualsiasi invocazione di make.
Se un modulo non viene compilato per qualche motivo, cerca attentamente il motivo per cui non è riuscito e
segnalare i problemi all'autore del modulo. Se sembra che il supporto per la creazione di estensioni
è in errore, segnalalo con tutti i dettagli su come la build è fallita usando perlbug
utilità.
Espansione dei caratteri jolly della riga di comando
Le shell di comando predefinite sui sistemi operativi discendenti DOS (come sono)
di solito non espandono gli argomenti con caratteri jolly forniti ai programmi. Lo considerano il
compito dell'applicazione per gestirlo. Questo è comunemente ottenuto collegando il
applicazione (nel nostro caso, perl) con codice di avvio che di solito le librerie di runtime C
fornire. Tuttavia, ciò risulta in versioni perl incompatibili (dal momento che il
il comportamento del codice di espansione argv differisce a seconda del compilatore ed è uniforme
bacato su alcuni compilatori). Inoltre, potrebbe essere fonte di frustrazione se si utilizza tale
un binario perl con una shell alternativa che *espande* i caratteri jolly.
Invece, la seguente soluzione funziona piuttosto bene. Le cose belle sono 1) tu
può iniziare a usarlo subito; 2) è più potente, perché farà bene
cosa con un modello come */*/*.c; 3) puoi decidere se vuoi/non vuoi usare
esso; e 4) puoi estendere il metodo per aggiungere eventuali personalizzazioni (o anche del tutto
diversi tipi di espansione con caratteri jolly).
C:\> copia con c:\perl\lib\Wild.pm
# Wild.pm - emula l'espansione della shell @ARGV su shell che non lo fanno
usa File::DosGlob;
@ARGV = mappa {
mio @g = File::DosGlob::glob($_) if /[*?]/;
@G ? @g: $_;
} @ARGV;
1;
^Z
C:\> imposta PERL5OPT=-MWild
C:\> perl -le "for (@ARGV) { print }" */*/perl*.c
p4view/perl/perl.c
p4view/perl/perlio.c
p4view/perl/perly.c
perl5.005/win32/perlglob.c
perl5.005/win32/perllib.c
perl5.005/win32/perlglob.c
perl5.005/win32/perllib.c
perl5.005/win32/perlglob.c
perl5.005/win32/perllib.c
Nota che ci sono due passaggi distinti: 1) Dovrai creare Wild.pm e metterlo
nella tua directory perl lib. 2) Dovrai impostare la variabile d'ambiente PERL5OPT.
Se vuoi che l'espansione argv sia l'impostazione predefinita, imposta PERL5OPT come predefinito
ambiente di avvio.
Se stai usando il compilatore Visual C, puoi ottenere la riga di comando del runtime C
espansione con caratteri jolly integrata nel binario perl. Il binario risultante si espanderà sempre
righe di comando non quotate, che potrebbero non essere ciò che desideri se usi una shell che lo fa
quello per te. L'espansione fatta è anche un po' meno potente dell'approccio
suggerito sopra.
Note su Windows a 64 bit
Windows .NET Server supporta il modello di dati LLP64 sull'architettura Intel Itanium.
Il modello dati LLP64 è diverso dal modello dati LP64 che è la norma a 64 bit
Piattaforme Unix. Nel primo, "int" e "long" sono entrambi tipi di dati a 32 bit, mentre
i puntatori sono larghi 64 bit. Inoltre, è presente un integrale separato a 64 bit
digitare "__int64". Al contrario, il modello di dati LP64 che è pervasivo sulle piattaforme Unix
fornisce "int" come tipo a 32 bit, mentre sia il tipo "long" che i puntatori sono off
Precisione a 64 bit. Si noti che entrambi i modelli forniscono l'indirizzabilità a 64 bit.
Windows a 64 bit in esecuzione su Itanium è in grado di eseguire binari x32 a 86 bit
in modo trasparente. Ciò significa che potresti usare una build di Perl a 32 bit su un 64 bit
sistema. Detto questo, perché si dovrebbe voler costruire una build a 64 bit di Perl? qui ci sono
alcuni motivi per cui ti preoccuperesti:
· Un'applicazione nativa a 64 bit funzionerà in modo molto più efficiente sull'hardware Itanium.
· Non esiste un limite di 2 GB per la dimensione del processo.
· Perl fornisce automaticamente il supporto per file di grandi dimensioni quando viene creato in Windows a 64 bit.
· Incorporare Perl all'interno di un'applicazione a 64 bit.
corsa Perl Script
Gli script Perl su UNIX usano il "#!" (aka "shebang") riga per indicare al sistema operativo che
dovrebbe eseguire il file usando perl. Windows non ha mezzi comparabili per indicare arbitrario
i file sono eseguibili.
Invece, tutti i metodi disponibili per eseguire file di testo normale su Windows si basano sul file
"estensione". Ci sono tre metodi per usarlo per eseguire script perl:
1. C'è una funzione chiamata "associazioni di estensioni di file". Questo può essere manipolato
tramite i due comandi "assoc" e "ftype" forniti di serie con Windows. Tipo
"tipi /?" per un esempio completo di come impostarlo per gli script perl (diciamo
che cosa? Pensavi che Windows non fosse pronto per perl? :).
2. Poiché le associazioni di file non funzionano ovunque e, secondo quanto riferito, ci sono bug con
associazioni di file dove funziona, il vecchio metodo di wrapping dello script perl
per farlo sembrare un normale file batch per il sistema operativo, può essere utilizzato. L'installazione
rende disponibile lo script "pl2bat.bat" che può essere utilizzato per avvolgere perl
script in file batch. Per esempio:
pl2bat foo.pl
creerà il file "FOO.BAT". Nota "pl2bat" elimina qualsiasi suffisso .pl e aggiunge a
.bat suffisso al file generato.
Se usi la shell di comando 4DOS/NT o simile, nota che "pl2bat" usa il "%*"
variabile nel file batch generato per fare riferimento a tutti gli argomenti della riga di comando,
quindi potrebbe essere necessario assicurarsi che il costrutto funzioni nei file batch. A partire da questo
scrivendo, gli utenti di 4DOS/NT avranno bisogno di un'istruzione "ParameterChar = *" nel loro 4NT.INI
file o sarà necessario eseguire "setdos /p*" nel file di avvio 4DOS/NT per abilitare
questo per funzionare.
3. L'uso di "pl2bat" presenta alcuni problemi: il nome del file viene modificato, quindi gli script che
fare affidamento su $0 per scoprire che cosa devono fare potrebbe non funzionare correttamente; eseguendo "pl2bat"
replica il contenuto dello script originale, quindi questo processo può essere
manutenzione intensiva se gli originali vengono aggiornati spesso. Un approccio diverso
che evita entrambi i problemi è possibile.
È disponibile uno script chiamato "runperl.bat" che può essere copiato in qualsiasi nome di file
(insieme al suffisso .bat). Ad esempio, se lo chiami "foo.bat", verrà eseguito
il file "pippo" quando viene eseguito. Dal momento che puoi eseguire file batch su Windows
piattaforme semplicemente digitando il nome (senza l'estensione), questo funziona effettivamente
il file "foo", quando si digita "foo" o "foo.bat". Con questo metodo,
"foo.bat" può anche trovarsi in una posizione diversa rispetto al file "foo", purché
"foo" è disponibile da qualche parte sul PATH. Se i tuoi script sono su un filesystem
che consente collegamenti simbolici, puoi anche evitare di copiare "runperl.bat".
Ecco un diversivo: copia "runperl.bat" in "runperl" e digita "runperl". Spiegare
il comportamento osservato, o la sua mancanza. :) Suggerimento: .gnidnats llits er'uoy fi
,"lrepnur" eletto :tniH
Miscellanea Cose
È installato un set completo di documentazione HTML, quindi dovresti essere in grado di usarlo se lo hai
un browser web installato sul tuo sistema.
"perldoc" è anche un utile strumento per sfogliare le informazioni contenute nella documentazione,
specialmente in combinazione con un cercapersone come "less" (le cui versioni recenti hanno Windows
sostegno). Potrebbe essere necessario impostare la variabile di ambiente PAGER per utilizzare un cercapersone specifico.
"perldoc -f foo" stamperà informazioni sull'operatore perl "foo".
Un errore comune quando si utilizza questa porta con una libreria GUI come "Tk" è presumere che
Il normale comportamento di Perl di aprire una finestra della riga di comando scomparirà. Questo non è il
Astuccio. Se vuoi avviare una copia di "perl" senza aprire una finestra della riga di comando, usa
l'eseguibile "wperl" creato durante il processo di installazione. L'uso è esattamente lo stesso
come normale "perl" su Windows, tranne che opzioni come "-h" non funzionano (poiché hanno bisogno di a
finestra della riga di comando su cui stampare).
Se trovi bug in perl, puoi eseguire "perlbug" per creare una segnalazione di bug (potresti dover
invialo manualmente se "perlbug" non riesce a trovare un mailer sul tuo sistema).
Usa perlwin32 online usando i servizi onworks.net