นี่คือคำสั่ง perlwin32 ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
perlwin32 - Perl ภายใต้ Windows
เรื่องย่อ
นี่คือคำแนะนำสำหรับการสร้าง Perl ใน Windows 2000 และใหม่กว่า
DESCRIPTION
ก่อนที่คุณจะเริ่ม คุณควรดูไฟล์ README ที่พบในระดับบนสุด
ไดเร็กทอรีที่แยกการกระจาย Perl ออกมา อย่าลืมอ่านทำความเข้าใจ
ข้อกำหนดภายใต้การแจกจ่ายซอฟต์แวร์นี้
นอกจากนี้ อย่าลืมอ่าน "BUGS AND CAVEATS" ด้านล่างเพื่อดูข้อจำกัดที่ทราบของพอร์ตนี้
ไฟล์ INSTALL ในระดับบนสุดของ Perl มีข้อมูลมากมายที่เกี่ยวข้องกับ .เท่านั้น
ผู้คนที่สร้าง Perl บนระบบที่เหมือนยูนิกซ์ โดยเฉพาะอย่างยิ่งคุณสามารถละเว้นได้อย่างปลอดภัย
ข้อมูลที่พูดถึง "กำหนดค่า"
คุณอาจต้องการดูตัวเลือกอื่นสำหรับการสร้าง Perl ที่จะใช้งานได้
Windows: ไฟล์ README.cygwin ซึ่งกำหนดกฎเกณฑ์ต่างๆ เพื่อสร้าง Perl for
วินโดว์. วิธีนี้อาจช่วยให้คุณสร้าง Perl ที่เข้ากันได้กับ Unix มากขึ้น แต่
คุณจะต้องดาวน์โหลดและใช้งาน build-time และ run-time support อื่น ๆ อีกด้วย
ซอฟต์แวร์ที่อธิบายไว้ในไฟล์นั้น
ชุดคำสั่งนี้มีขึ้นเพื่ออธิบายสิ่งที่เรียกว่าพอร์ต "ดั้งเดิม" ของ Perl ไปยัง
แพลตฟอร์ม Windows ซึ่งรวมถึงระบบปฏิบัติการ Windows ทั้งแบบ 32 บิตและ 64 บิต NS
ผลลัพธ์ของ Perl นั้นไม่ต้องการซอฟต์แวร์เพิ่มเติมในการทำงาน (นอกเหนือจากที่มาพร้อมกับ your
ระบบปฏิบัติการ). ปัจจุบันพอร์ตนี้สามารถใช้อย่างใดอย่างหนึ่งต่อไปนี้
คอมไพเลอร์บนสถาปัตยกรรม Intel x86:
Microsoft Visual C++ เวอร์ชัน 6.0 หรือใหม่กว่า
คอมไพเลอร์ Intel C++ (ทดลอง)
Gcc โดย mingw.org gcc เวอร์ชัน 3.4.5 หรือใหม่กว่า
Gcc โดย mingw-w64.org gcc เวอร์ชัน 4.4.3 หรือใหม่กว่า
โปรดทราบว่าสองโครงการสุดท้ายนี้เป็นโครงการที่แข่งขันกันจริง ๆ ทั้งคู่ส่งมอบให้เสร็จสมบูรณ์
gcc toolchain สำหรับ MS Windows:
<http://mingw.org>
นำเสนอ gcc toolchain ที่กำหนดเป้าหมายแพลตฟอร์ม Windows แบบ 32 บิต
<http://mingw-w64.org>
มอบชุดเครื่องมือ gcc ที่กำหนดเป้าหมายทั้งแพลตฟอร์ม Windows 64 บิตและ 32 บิต
(ทั้งๆ ที่ชื่อโปรเจ็กต์ "mingw-w64" ไม่ใช่แค่ 64 บิตเท่านั้น) พวกเขาส่งมอบ
คอมไพเลอร์ gcc ดั้งเดิมและคอมไพเลอร์ข้ามที่ได้รับการสนับสนุนโดย perl's
เมคไฟล์
คอมไพเลอร์ Microsoft Visual C++ ก็แจกฟรีเช่นกัน มีจำหน่ายแล้ว
เป็น "Visual C++ Toolkit 2003" หรือ "Visual C++ 2005-2013 Express Edition" (และเป็นส่วนหนึ่งด้วย
ของ ".NET Framework SDK") และเป็นคอมไพเลอร์เดียวกันกับที่มาพร้อมกับ "Visual C++ .NET
2003 Professional" หรือ "Visual C++ 2005-2013 Professional" ตามลำดับ
พอร์ตนี้ยังสามารถสร้างขึ้นบน IA64/AMD64 โดยใช้:
Microsoft Platform SDK พ.ย. 2001 (คอมไพเลอร์และเครื่องมือ 64 บิต)
คอมไพเลอร์ MinGW64 (gcc เวอร์ชัน 4.4.3 หรือใหม่กว่า)
Windows SDK สามารถดาวน์โหลดได้จากhttp://www.microsoft.com/>. คอมไพเลอร์ MinGW64
มีจำหน่ายที่http://mingw-w64.org>. อันหลังเป็นการกำหนดเป้าหมายแบบข้ามคอมไพเลอร์
วิน 64 นอกจากนี้ยังมีคอมไพเลอร์ที่ถูกตัดแต่ง (ไม่มี java หรือ gfortran) เหมาะสำหรับการสร้าง
perl ได้ที่:http://strawberryperl.com/package/kmx/64_gcctoolchain/>
หมายเหตุ: หากคุณใช้คอมไพเลอร์ 32 บิตเพื่อสร้าง Perl บนระบบปฏิบัติการ Windows 64 บิต
ระบบ จากนั้นคุณควรตั้งค่าตัวแปรสภาพแวดล้อม WIN64 เป็น "undef" อีกทั้งตัดแต่งแล้ว
คอมไพเลอร์ลงผ่านการทดสอบเฉพาะเมื่อ USE_ITHREADS *= กำหนด (ตรงข้ามกับ undef) และเมื่อ
CFG *= บรรทัดดีบักถูกใส่ความคิดเห็น
พอร์ตนี้รองรับ MakeMaker อย่างเต็มที่ (ชุดโมดูลที่ใช้สร้างส่วนขยายไปยัง
เพิร์ล). ดังนั้น คุณควรจะสามารถสร้างและติดตั้งส่วนขยายส่วนใหญ่ที่พบในไฟล์
ไซต์ CPAN ดู "คำแนะนำการใช้งานสำหรับ Perl บน Windows" ด้านล่างสำหรับคำแนะนำทั่วไปเกี่ยวกับเรื่องนี้
การตั้งค่า Up Perl on Windows
ทำ
คุณต้องมีโปรแกรม "สร้าง" เพื่อสร้างแหล่งที่มา หากคุณกำลังใช้ Visual C++ หรือ the
เครื่องมือ Windows SDK nmake จะทำงาน บิลด์โดยใช้ gcc need dmake
dmake เป็น make ที่ใช้ได้ฟรีซึ่งมีฟีเจอร์มาโครที่ดีมากและ
ความเท่าเทียมกัน
พอร์ตของ dmake สำหรับ Windows มีให้จาก:
<http://search.cpan.org/dist/dmake/>
ดึงและติดตั้ง dmake ที่ใดที่หนึ่งบนเส้นทางของคุณ
เชลล์คำสั่ง
ใช้เชลล์ "cmd" เริ่มต้นที่มาพร้อมกับ Windows บางรุ่นยอดนิยม
เชลล์ 4DOS/NT มีความเข้ากันไม่ได้ที่อาจทำให้คุณมีปัญหา ถ้าบิลด์ล้มเหลว
ภายใต้เชลล์นั้น ให้ลองสร้างอีกครั้งด้วย cmd shell
ตรวจสอบให้แน่ใจว่าเส้นทางไปยังไดเร็กทอรี build ไม่มีช่องว่าง การสร้างมักจะ
ใช้ได้ในสถานการณ์นี้ แต่การทดสอบบางอย่างจะล้มเหลว
Microsoft Visual C ++
nmake ที่มาพร้อมกับ Visual C++ จะเพียงพอสำหรับการสร้าง Visual C ต้องการสิ่งนั้น
มีการตั้งค่าบางอย่างในคอนโซลก่อนที่ Visual C จะรันได้สำเร็จ เพื่อทำ
กล่องคอนโซลสามารถเรียกใช้คอมไพเลอร์ C ได้คุณจะต้องเรียกใช้ .ก่อน
ไฟล์ "vcvars32.bat" เพื่อคอมไพล์สำหรับ x86-32 และสำหรับ x86-64 "vcvarsall.bat x64" หรือ
"vcvarsamd64.bat" ในการติดตั้งทั่วไปของผลิตภัณฑ์คอมไพเลอร์ Microsoft C ชุดเหล่านี้
ไฟล์จะอยู่ในตัวแปรสภาพแวดล้อม "PATH" แล้ว คุณจึงพิมพ์ได้เลย
โดยไม่มีเส้นทางที่แน่นอนในคอนโซลของคุณ หากคุณต้องการค้นหาเส้นทางที่แน่นอนสู่
ไฟล์แบตช์ มักจะพบที่ไหนสักแห่งเช่น C:\Program Files\Microsoft Visual
สตูดิโอ\VC98\Bin. ด้วยผลิตภัณฑ์ Micrsoft C ที่ใหม่กว่า (วางจำหน่ายหลัง ~2004) the
โปรแกรมติดตั้งจะใส่ทางลัดในเมนูเริ่มต้นเพื่อเปิดหน้าต่างคอนโซลใหม่ด้วย
คอนโซลตั้งค่าไว้แล้วสำหรับสถาปัตยกรรมเป้าหมายของคุณ (x86-32 หรือ x86-64 หรือ IA64)
ด้วยคอมไพเลอร์ที่ใหม่กว่า คุณอาจใช้แบตช์ไฟล์ที่เก่ากว่าได้หากคุณเลือกใช้
คุณยังสามารถใช้ dmake เพื่อสร้างโดยใช้ Visual C++; อย่างไรก็ตาม คุณตั้งค่าOSRELEASE
เป็น "microsft" (หรือชื่อไดเร็กทอรีใดก็ตามที่ Visual C dmake
การกำหนดค่าใช้งานได้) ในสภาพแวดล้อมของคุณและแก้ไข win32/config.vc เพื่อเปลี่ยน
"make=nmake" เป็น "make=dmake" ขั้นตอนหลังจำเป็นเฉพาะในกรณีที่คุณต้องการใช้
dmake เป็นค่าเริ่มต้นของคุณสำหรับการสร้างส่วนขยายโดยใช้ MakeMaker
Microsoft Visual C++ 2008-2013 รุ่นเอ็กซ์เพรส
Visual C++ 2008-2013 Professional เวอร์ชันฟรีเหล่านี้มีคอมไพเลอร์ตัวเดียวกัน
และตัวเชื่อมโยงที่มาพร้อมกับเวอร์ชันเต็ม และยังมีทุกอย่างที่จำเป็นเพื่อ
สร้าง Perl แทนที่จะต้องดาวน์โหลด Windows SDK แยกต่างหากเหมือนก่อนหน้า
รุ่นได้
สามารถดาวน์โหลดแพ็คเกจเหล่านี้ได้โดยค้นหาใน Download Center ที่
<http://www.microsoft.com/downloads/search.aspx?displaylang=th>. (ให้ที่แน่นอน
ลิงก์ไปยังแพ็คเกจเหล่านี้ได้พิสูจน์แล้วว่าเป็นงานที่ไร้จุดหมายเพราะลิงก์ยังคงเปลี่ยนแปลงอยู่เสมอ
บ่อยมาก)
ติดตั้ง Visual C++ 2008-2013 Express จากนั้นตั้งค่าสภาพแวดล้อมของคุณโดยใช้ เช่น
C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\vsvars32.bat
(สมมติว่าเลือกตำแหน่งการติดตั้งเริ่มต้น)
Perl ควรสร้างโดยใช้ win32/Makefile คุณจะต้องแก้ไขไฟล์นั้นเป็น
ตั้งค่า CCTYPE เป็น MSVC90FREE-MSVC120FREE อย่างใดอย่างหนึ่งก่อน
ไมโครซอฟต์ Visual C++ 2005 Express Edition
Visual C++ 2005 Professional เวอร์ชันฟรีนี้มีคอมไพเลอร์เดียวกันและ
linker ที่มาพร้อมกับเวอร์ชันเต็ม แต่ไม่มีทุกอย่างที่จำเป็นต่อ
สร้าง Perl
คุณจะต้องดาวน์โหลด "Windows SDK" ("Core SDK" และ "MDAC SDK" ด้วย
จำเป็นต้องมีส่วนประกอบ) สำหรับไฟล์ส่วนหัวและไลบรารีเพิ่มเติม
สามารถดาวน์โหลดแพ็คเกจเหล่านี้ได้โดยค้นหาใน Download Center ที่
<http://www.microsoft.com/downloads/search.aspx?displaylang=th>. (ให้ที่แน่นอน
ลิงก์ไปยังแพ็คเกจเหล่านี้ได้พิสูจน์แล้วว่าเป็นงานที่ไร้จุดหมายเพราะลิงก์ยังคงเปลี่ยนแปลงอยู่เสมอ
บ่อยมาก)
พยายามขอรับ Windows SDK เวอร์ชันล่าสุด บางครั้งแพ็คเกจเหล่านี้มี
ระบบปฏิบัติการ Windows รุ่นใดรุ่นหนึ่งในชื่อ แต่ใช้งานได้จริงกับระบบปฏิบัติการรุ่นอื่น
ด้วย. ตัวอย่างเช่น "Windows Server 2003 R2 Platform SDK" ยังทำงานบน Windows XP
SP2 และ Windows 2000
ติดตั้ง Visual C++ 2005 ก่อน จากนั้นจึงติดตั้ง Platform SDK ตั้งค่าสภาพแวดล้อมของคุณเป็น
ดังต่อไปนี้ (สมมติว่าตำแหน่งการติดตั้งเริ่มต้นถูกเลือก):
SET PlatformSDKdir=C:\Program Files\Microsoft แพลตฟอร์ม SDK
SET PATH=%SystemRoot%\system32;%SystemRoot%;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE;C:\Program Files\Microsoft Visual Studio 8\VC\BIN;C:\Program Files\Microsoft Visual Studio 8\Common7\Tools;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin;C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727;C:\Program Files\Microsoft Visual สตูดิโอ 8\VC\VCPackages;%PlatformSDKDir%\Bin
SET INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;%PlatformSDKDir%\include รวม
ตั้งค่า LIB=C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%PlatformSDKdir%\lib
ตั้งค่า LIBPATH=C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
(อาจต้องตั้งค่า PlatformSDKDir แตกต่างกันไปขึ้นอยู่กับเวอร์ชันที่คุณใช้
กำลังใช้ เวอร์ชันก่อนหน้าติดตั้งใน "C:\Program Files\Microsoft SDK" ในขณะที่
เวอร์ชันล่าสุดติดตั้งในตำแหน่งเฉพาะเวอร์ชัน เช่น "C:\Program
Files\Microsoft Platform SDK สำหรับ Windows Server 2003 R2")
Perl ควรสร้างโดยใช้ win32/Makefile คุณจะต้องแก้ไขไฟล์นั้นเป็น
เซ็ต
CCTYPE = MSVC80 ฟรี
และตั้งค่า CCHOME, CCINCDIR และ CCLIBDIR ตามการตั้งค่าสภาพแวดล้อมด้านบน
ชุดเครื่องมือ Microsoft Visual C++ 2003
ชุดเครื่องมือฟรีนี้มีคอมไพเลอร์และลิงเกอร์ตัวเดียวกับที่มาพร้อมกับ Visual C++ .NET
2003 Professional แต่ไม่มีทุกสิ่งที่จำเป็นในการสร้าง Perl
คุณจะต้องดาวน์โหลด "Platform SDK" ("Core SDK" และ "MDAC SDK" ด้วย
จำเป็นต้องมี) สำหรับไฟล์ส่วนหัว ไลบรารี และ rc.exe และ ".NET Framework
SDK" สำหรับไลบรารีและ nmake.exe เพิ่มเติม โปรดทราบว่าหลัง (ซึ่งรวมถึง
คอมไพเลอร์และตัวเชื่อมโยงฟรี) ต้องการ ".NET Framework Redistributable" เป็น
ติดตั้งก่อน สามารถดาวน์โหลดและติดตั้งแยกต่างหาก แต่รวมอยู่ใน
"Visual C++ Toolkit 2003" อยู่แล้ว
สามารถดาวน์โหลดแพ็คเกจเหล่านี้ทั้งหมดได้โดยค้นหาในศูนย์ดาวน์โหลดที่
<http://www.microsoft.com/downloads/search.aspx?displaylang=th>. (ให้ที่แน่นอน
ลิงก์ไปยังแพ็คเกจเหล่านี้ได้พิสูจน์แล้วว่าเป็นงานที่ไร้จุดหมายเพราะลิงก์ยังคงเปลี่ยนแปลงอยู่เสมอ
บ่อยมาก)
พยายามขอรับ Windows SDK เวอร์ชันล่าสุด บางครั้งแพ็คเกจเหล่านี้มี
ระบบปฏิบัติการ Windows รุ่นใดรุ่นหนึ่งในชื่อ แต่ใช้งานได้จริงกับระบบปฏิบัติการรุ่นอื่น
ด้วย. ตัวอย่างเช่น "Windows Server 2003 R2 Platform SDK" ยังทำงานบน Windows XP
SP2 และ Windows 2000
ติดตั้งชุดเครื่องมือก่อน จากนั้นจึงติดตั้ง Platform SDK จากนั้นจึงติดตั้ง .NET Framework SDK ติดตั้ง
สภาพแวดล้อมของคุณดังนี้ (สมมติว่าเลือกตำแหน่งการติดตั้งเริ่มต้น):
SET PlatformSDKdir=C:\Program Files\Microsoft แพลตฟอร์ม SDK
ชุดเส้นทาง=%SystemRoot%\system32;%SystemRoot%;C:\Program Files\Microsoft Visual C++ Toolkit 2003\bin;%PlatformSDKdir%\Bin;C:\Program Files\Microsoft.NET\SDK\v1.1\Bin
ชุดรวม=C:\Program Files\Microsoft Visual C++ Toolkit 2003\include; %PlatformSDKdir%\include;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include
ตั้งค่า LIB=C:\Program Files\Microsoft Visual C++ Toolkit 2003\lib; %PlatformSDKdir%\lib;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib
(อาจต้องตั้งค่า PlatformSDKDir แตกต่างกันไปขึ้นอยู่กับเวอร์ชันที่คุณใช้
กำลังใช้ เวอร์ชันก่อนหน้าติดตั้งใน "C:\Program Files\Microsoft SDK" ในขณะที่
เวอร์ชันล่าสุดติดตั้งในตำแหน่งเฉพาะเวอร์ชัน เช่น "C:\Program
Files\Microsoft Platform SDK สำหรับ Windows Server 2003 R2")
ไฟล์ที่จำเป็นหลายไฟล์ยังคงหายไป:
· cvtres.exe จำเป็นสำหรับ link.exe เมื่อใช้ไฟล์ .res แท้จริงแล้วคือ
ติดตั้งโดย .NET Framework SDK แต่ลงในตำแหน่งดังต่อไปนี้:
C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322
คัดลอกจากที่นั่นไปยัง %PlatformSDKDir%\Bin
· lib.exe มักใช้ในการสร้างไลบรารี แต่ link.exe กับ / lib ตัวเลือก
ยังใช้งานได้ ดังนั้นเปลี่ยน win32/config.vc เพื่อใช้แทน:
เปลี่ยนการอ่านบรรทัด:
ar='lib'
ไปที่:
ar='link / lib'
การสร้างแบตช์ไฟล์ที่เรียกว่า lib.bat ใน C:\Program . อาจเป็นประโยชน์
Files\Microsoft Visual C++ Toolkit 2003\bin ประกอบด้วย:
@ echo off
ลิงค์ / lib %*
เพื่อประโยชน์ของโมดูลส่วนขยาย C ใด ๆ ที่คุณอาจต้องการสร้าง
ภายหลังซึ่งอ้างอิงถึง "lib" อย่างชัดเจนแทนที่จะรับค่าจาก
$Config{ar}
· setargv.obj จำเป็นในการสร้าง perlglob.exe (และ perl.exe หาก USE_SETARGV
เปิดใช้งานตัวเลือก) Platform SDK ให้ไฟล์อ็อบเจ็กต์นี้ในรูปแบบซอร์สใน
% PlatformSDKDir%\src\crt. คัดลอก setargv.c, cruntime.h และ internal.h จากที่นั่นไปยัง
บางตำแหน่งชั่วคราวและสร้าง setargv.obj โดยใช้
cl.exe /c /I. /D_CRTBLD setargv.c
จากนั้นคัดลอก setargv.obj ไปยัง %PlatformSDKDir%\lib
หรือถ้าคุณไม่ต้องการ perlglob.exe และไม่ต้องเปิดใช้งาน
USE_SETARGV ตัวเลือก จากนั้นคุณสามารถลบการกล่าวถึง $(GLOBEXE) ทั้งหมดออกจาก .ได้อย่างปลอดภัย
ไม่จำเป็นต้องใช้ win32/Makefile และ setargv.obj
Perl ควรสร้างโดยใช้ win32/Makefile คุณจะต้องแก้ไขไฟล์นั้นเป็น
เซ็ต
CCTYPE = MSVC70 ฟรี
และตั้งค่า CCHOME, CCINCDIR และ CCLIBDIR ตามการตั้งค่าสภาพแวดล้อมด้านบน
Microsoft Platform SDK 64 บิตคอมไพเลอร์
nmake ที่มาพร้อมกับ Platform SDK จะเพียงพอสำหรับการสร้าง Perl มั่นใจ
คุณกำลังสร้างภายในหนึ่งในเชลล์ "Build Environment" ที่พร้อมใช้งานหลังจากที่คุณ
ติดตั้ง Platform SDK จากเมนูเริ่ม
MinGW รีลีส 3 พร้อม gcc
Perl สามารถคอมไพล์ด้วย gcc จาก MinGW รีลีส 3 และใหม่กว่า (โดยใช้ gcc 3.4.5 และ
ภายหลัง). สามารถดาวน์โหลดได้ที่นี่:
<http://www.mingw.org/>
คุณต้องใช้ dmake ด้วย ดู "สร้าง" ด้านบนเกี่ยวกับวิธีการรับ
คอมไพเลอร์ Intel C++
เพิ่มการสนับสนุนทดลองสำหรับการใช้ Intel C++ Compiler แล้ว แก้ไข win32/Makefile
และเลือก CCTYPE ที่ถูกต้องสำหรับ Visual C ที่ติดตั้ง Intel C อีกด้วย
uncomment __ICC เพื่อเปิดใช้งาน Intel C บนการสนับสนุน Visual C เพื่อตั้งค่าบิลด์
สภาพแวดล้อม จากเมนูเริ่มให้เรียกใช้โหมด IA-32 Visual Studio 20__ หรือ Intel 64 Visual
โหมด Studio 20__ ตามความเหมาะสม จากนั้นเรียกใช้ nmake ตามปกติในกล่องพรอมต์นั้น
เฉพาะ Intel C++ Compiler v12.1 เท่านั้นที่ได้รับการทดสอบ รุ่นอื่นน่าจะใช้ได้
การใช้ Intel C++ Compiler แทน Visual C จะทำให้เกิดความเข้ากันได้กับ C99
ซึ่งจำเป็นสำหรับบางโมดูล CPAN XS ในขณะที่ยังคงความเข้ากันได้กับ Visual C
รหัสวัตถุและโครงสร้างพื้นฐานการดีบัก Visual C ซึ่งแตกต่างจาก GCC
การก่อสร้าง
· ตรวจสอบให้แน่ใจว่าคุณอยู่ในไดเร็กทอรีย่อย "win32" ที่อยู่ใต้ perl ระดับบนสุด ไดเรกทอรีนี้
มี "Makefile" ที่จะทำงานร่วมกับเวอร์ชันของ nmake ที่มาพร้อมกับ Visual C++
หรือ Windows SDK และ dmake "makefile.mk" ที่จะใช้งานได้ทั้งหมดที่รองรับ
คอมไพเลอร์ ค่าเริ่มต้นใน dmake makefile ถูกตั้งค่าเพื่อสร้างโดยใช้ MinGW/gcc
· แก้ไข makefile.mk (หรือ Makefile หากคุณใช้ nmake) และเปลี่ยนค่าของ
INST_DRV และ INST_TOP คุณยังสามารถเปิดใช้งานแฟล็กบิลด์ต่างๆ เหล่านี้อธิบายไว้
ใน makefiles
โปรดทราบว่าโดยทั่วไปไม่ควรพยายามสร้าง Perl ด้วย INST_DRV และ
INST_TOP ตั้งค่าเป็นเส้นทางที่มีอยู่แล้วจากรุ่นก่อนหน้า โดยเฉพาะสิ่งนี้
อาจทำให้เกิดปัญหากับการทดสอบ lib/ExtUtils/t/Embed.t ซึ่งพยายามสร้าง
ทดสอบโปรแกรมและอาจจบลงด้วยการสร้างเทียบกับไดเร็กทอรี lib/CORE ของ Perl ที่ติดตั้งไว้
มากกว่าที่จะถูกทดสอบ
คุณจะต้องตรวจสอบให้แน่ใจว่าได้ตั้งค่า CCTYPE อย่างถูกต้องและ CCHOME ชี้ไปที่
ทุกที่ที่คุณติดตั้งคอมไพเลอร์ของคุณ
หากสร้างด้วย cross-compiler ที่จัดทำโดย mingw-w64.org คุณจะต้องยกเลิกการแสดงความเห็น
บรรทัดที่กำหนด GCCCROSS ใน makefile.mk ทำสิ่งนี้เฉพาะในกรณีที่เป็นไม้กางเขน
คอมไพเลอร์ - เช่นเฉพาะในกรณีที่โฟลเดอร์ bin ไม่มี gcc.exe (ครอสคอมไพเลอร์
ไม่ได้จัดเตรียม gcc.exe, g++.exe, ar.exe เป็นต้น แต่ไฟล์เรียกทำงานเหล่านี้ทั้งหมด
นำหน้าด้วย 'x86_64-w64-mingw32-')
ค่าเริ่มต้นสำหรับ CCHOME ใน makefiles สำหรับ Visual C++ อาจไม่ถูกต้องสำหรับ
บางรุ่น ตรวจสอบให้แน่ใจว่าค่าเริ่มต้นมีอยู่และถูกต้อง
คุณอาจต้องใส่ความคิดเห็นในบรรทัด "DELAYLOAD = ..." ใน Makefile หากคุณ
ใช้ VC++ 6.0 โดยไม่มี Service Pack ล่าสุดและตัวเชื่อมโยงรายงาน internal
ความผิดพลาด
หากคุณต้องการสร้างส่วนขยายหลักบางส่วนแบบคงที่ลงใน dll ของ Perl ให้ระบุใน
มาโคร STATIC_EXT
หมายเหตุ: ไม่รองรับตัวเลือกบิลด์ USE_64_BIT_INT กับ Visual C++ 32 . รุ่น 6.0 บิต
คอมไพเลอร์
อย่าลืมอ่านคำแนะนำใกล้กับด้านบนของ makefiles อย่างระมัดระวัง
· พิมพ์ "dmake" (หรือ "nmake" หากคุณใช้ยี่ห้อนั้น)
สิ่งนี้ควรสร้างทุกอย่าง โดยเฉพาะจะสร้าง perl.exe, perl522.dll at
ระดับบนสุดของ perl และ dll ส่วนขยายอื่น ๆ มากมายภายใต้ไดเร็กทอรี lib\auto ถ้า
บิลด์ล้มเหลวด้วยเหตุผลใดก็ตาม ตรวจสอบให้แน่ใจว่าคุณได้ทำตามขั้นตอนก่อนหน้านี้อย่างถูกต้อง
หากคุณเชี่ยวชาญในการสร้างโค้ด C แล้ว นี่คือคำแนะนำในการเร่งความเร็ว
สร้าง perl และต่อมา "ทำการทดสอบ" พยายามรักษาตัวแปรสิ่งแวดล้อม PATH ของคุณไว้
โดยมีจำนวนโฟลเดอร์น้อยที่สุด (อย่าลืมเก็บโฟลเดอร์ของคอมไพเลอร์ C ไว้ด้วย
ที่นั่น). "C:\WINDOWS\system32" หรือ "C:\WINNT\system32" ขึ้นอยู่กับเวอร์ชันระบบปฏิบัติการของคุณ
ควรเป็นโฟลเดอร์แรกใน PATH เนื่องจาก "cmd.exe" เป็นโปรแกรมที่เปิดตัวบ่อยที่สุด
ระหว่างการสร้างและการทดสอบในภายหลัง
การทดสอบ Perl on Windows
พิมพ์ "dmake test" (หรือ "nmake test") การดำเนินการนี้จะเรียกใช้การทดสอบส่วนใหญ่จากชุดทดสอบ
(จะข้ามบททดสอบไปมากมาย)
ไม่ควรมีการทดสอบล้มเหลว
หากคุณสร้างด้วย Visual C ++ 2013 การทดสอบสามครั้งในปัจจุบันอาจล้มเหลวด้วย Daylight Saving
ปัญหาที่เกี่ยวข้องกับเวลา: t/io/fs.t, cpan/HTTP-จิ๋ว/t/110_mirror.t และ lib/File.Copy.t.
ความล้มเหลวเกิดจากจุดบกพร่องใน CRT ใน VC++ 2013 ซึ่งจะได้รับการแก้ไขในรุ่นต่อๆ ไป
ของ VC++ ตามที่ Microsoft อธิบายไว้ที่นี่:
.
ในระหว่างนี้ หากคุณต้องการฟังก์ชัน "stat" และ "uttime" คงที่ ให้ดูที่
CPAN แจกจ่าย Win32::UTCFileTime.
หากคุณสร้างด้วย gcc บางเวอร์ชัน (เช่น 4.8.1) จาก www.mingw.org แล้ว
ต่อ/POSIX/t/time.t อาจล้มเหลวในการทดสอบ 17 เนื่องจากข้อบกพร่องที่ทราบใน gcc builds เหล่านั้น: ดู
<http://sourceforge.net/p/mingw/bugs/2152/>.
ความล้มเหลวในการทดสอบบางอย่างอาจเกิดขึ้นหากคุณใช้เชลล์คำสั่งอื่นที่ไม่ใช่ "cmd.exe" ดั้งเดิม
หรือถ้าคุณกำลังสร้างจากเส้นทางที่มีช่องว่าง ดังนั้นอย่าทำอย่างนั้น
หากคุณกำลังรันการทดสอบจากหน้าต่างเชลล์ emacs คุณอาจเห็นความล้มเหลวใน op/stat.t
เรียกใช้ "dmake test-notty" ในกรณีนั้น
นอกจากนี้ คุณควรตรวจสอบให้แน่ใจว่าระหว่าง "ทำการทดสอบ" คุณไม่มีเครื่องมือ GNU
แพ็คเกจในเส้นทางของคุณ: ชุดเครื่องมือบางอย่างเช่น Unixutils มีเครื่องมือบางอย่าง ("ประเภท" สำหรับ
อินสแตนซ์) ซึ่งแทนที่ Windows และทำให้การทดสอบล้มเหลว ลบออกจากเส้นทางของคุณ
ขณะทดสอบเพื่อหลีกเลี่ยงข้อผิดพลาดเหล่านี้
โปรดรายงานความล้มเหลวอื่นๆ ตามที่อธิบายไว้ใน "ข้อบกพร่องและข้อควรระวัง"
การติดตั้ง of Perl on Windows
พิมพ์ "dmake install" (หรือ "nmake install") สิ่งนี้จะทำให้ Perl ที่สร้างขึ้นใหม่และ
ไลบรารีภายใต้สิ่งที่ "INST_TOP" ชี้ไปที่ Makefile นอกจากนี้ยังจะติดตั้ง
เอกสารประกอบ pod ภายใต้ "$INST_TOP\$INST_VER\lib\pod" และเวอร์ชัน HTML ของเวอร์ชันเดียวกันภายใต้
"$INST_TOP\$INST_VER\lib\pod\html"
ในการใช้ Perl ที่คุณเพิ่งติดตั้ง คุณจะต้องเพิ่มรายการใหม่ใน PATH . ของคุณ
ตัวแปรสภาพแวดล้อม: "$INST_TOP\bin" เช่น
ตั้งค่า PATH=c:\perl\bin;%PATH%
หากคุณเลือกที่จะยกเลิกการแสดงความคิดเห็น "INST_VER" และ "INST_ARCH" ใน makefile แสดงว่าทำการติดตั้ง
โครงสร้างซับซ้อนขึ้นเล็กน้อยและคุณจะต้องเพิ่มส่วนประกอบ PATH ใหม่สองรายการ
แทน: "$INST_TOP\$INST_VER\bin" และ "$INST_TOP\$INST_VER\bin\$ARCHNAME" เช่น
ตั้งค่า PATH=c:\perl\5.6.0\bin;c:\perl\5.6.0\bin\MSWin32-x86;%PATH%
การใช้ คำแนะนำ สำหรับ Perl on Windows
ตัวแปรสภาพแวดล้อม
พาธการติดตั้งที่คุณตั้งค่าระหว่างบิลด์จะถูกคอมไพล์เป็น Perl ดังนั้นคุณ
ไม่ต้องทำอะไรเพิ่มเติมเพื่อเริ่มใช้ Perl นั้น (ยกเว้นเพิ่มตำแหน่ง
ไปยังตัวแปร PATH ของคุณ)
หากคุณใส่ส่วนขยายในตำแหน่งที่ไม่ปกติ คุณสามารถตั้งค่า PERL5LIB เป็นรายการพาธ
คั่นด้วยเครื่องหมายอัฒภาคที่คุณต้องการให้ Perl ค้นหาไลบรารี มองหา
คำอธิบายของตัวแปรสภาพแวดล้อมอื่น ๆ ที่คุณสามารถตั้งค่าใน perlrun
คุณยังสามารถควบคุมเชลล์ที่ Perl ใช้เพื่อเรียกใช้ ระบบ() และคำสั่งย้อนกลับ
ผ่าน PERL5SHELL ดู เพิร์ลรัน
Perl ไม่ได้ขึ้นอยู่กับรีจิสทรี แต่สามารถค้นหาค่าเริ่มต้นบางอย่างได้หากคุณ
เลือกที่จะวางไว้ที่นั่น Perl พยายามอ่านรายการจาก
"HKEY_CURRENT_USER\Software\Perl" และ "HKEY_LOCAL_MACHINE\Software\Perl" รายการใน
รายการแทนที่ในอดีตในภายหลัง รายการต่อไปนี้อย่างน้อยหนึ่งรายการ (ของ
ชนิด REG_SZ หรือ REG_EXPAND_SZ) อาจตั้งค่าได้:
lib-$] พาธไลบรารีมาตรฐานเฉพาะเวอร์ชันเพื่อเพิ่มใน @INC
เส้นทางไลบรารีมาตรฐาน lib เพื่อเพิ่ม @INC
sitelib-$] เส้นทางไลบรารีไซต์เฉพาะเวอร์ชันเพื่อเพิ่มใน @INC
เส้นทางไลบรารีไซต์ sitelib เพื่อเพิ่ม @INC
vendorlib-$] พาธไลบรารีของผู้ขายเฉพาะเวอร์ชันเพื่อเพิ่มใน @INC
เส้นทางไลบรารีของผู้ขาย vendorlib เพื่อเพิ่ม @INC
PERL* ทางเลือกสำหรับการค้นหา %ENV ทั้งหมดที่ขึ้นต้นด้วย "PERL"
โปรดทราบว่า $] ข้างต้นไม่ใช่ตัวอักษร แทนที่ Perl รุ่นใดก็ได้ที่คุณต้องการ
เพื่อเป็นเกียรติแก่รายการนั้น เช่น 5.6.0 เส้นทางจะต้องคั่นด้วยเครื่องหมายอัฒภาคตามปกติบน
หน้าต่าง
ไฟล์ Globbing
โดยค่าเริ่มต้น Perl จะจัดการไฟล์ที่ globbing โดยใช้นามสกุล File::Glob ซึ่งให้
ลูกโลกแบบพกพา
หากคุณต้องการให้ Perl ใช้ globbing ที่เลียนแบบลักษณะนิสัยของชื่อไฟล์ DOS
คุณอาจต้องการพิจารณาใช้ File::DosGlob เพื่อแทนที่ internal โลก()
การดำเนินการ ดูรายละเอียดที่ไฟล์::DosGlob
ใช้ Perl จากบรรทัดคำสั่ง
หากคุณคุ้นเคยกับการใช้ Perl จากเชลล์บรรทัดคำสั่งต่างๆ ที่พบใน UNIX
สภาพแวดล้อม คุณจะไม่ค่อยพอใจกับสิ่งที่ Windows นำเสนอผ่าน a
เปลือกคำสั่ง
สิ่งสำคัญที่ต้องทำความเข้าใจเกี่ยวกับสภาพแวดล้อมของ Windows คือบรรทัดคำสั่ง
ที่คุณพิมพ์จะถูกประมวลผลสองครั้งก่อนที่ Perl จะเห็น ขั้นแรก คำสั่ง shell . ของคุณ
(โดยปกติคือ CMD.EXE) ประมวลผลบรรทัดคำสั่งล่วงหน้า เพื่อจัดการการเปลี่ยนเส้นทาง สภาพแวดล้อม
การขยายตัวแปรและตำแหน่งของไฟล์เรียกทำงานที่จะเรียกใช้ จากนั้น Perl ที่ปฏิบัติการได้
แยกบรรทัดคำสั่งที่เหลือออกเป็นอาร์กิวเมนต์แต่ละรายการ โดยใช้ C runtime
ห้องสมุดที่สร้าง Perl
เป็นสิ่งสำคัญอย่างยิ่งที่จะต้องทราบว่าทั้งเชลล์และรันไทม์ C ไม่ทำอะไรเลย
การขยายไวด์การ์ดของอาร์กิวเมนต์บรรทัดคำสั่ง (ดังนั้นจึงไม่จำเป็นต้องใส่สัญลักษณ์แทน)
นอกจากนี้ พฤติกรรมการอ้างอิงของเชลล์และรันไทม์ C ยังเป็นพื้นฐานที่ดีที่สุด
(และหากคุณใช้เชลล์ที่ไม่ได้มาตรฐาน อาจไม่สอดคล้องกัน) เท่านั้น (มีประโยชน์)
เครื่องหมายคำพูดคือเครื่องหมายคำพูดคู่ (") สามารถใช้เพื่อป้องกันช่องว่างและอื่น ๆ
อักขระพิเศษในอาร์กิวเมนต์
เอกสารประกอบของ Windows อธิบายกฎการแยกวิเคราะห์เชลล์ที่นี่:
<http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=true>
และกฎการแยกวิเคราะห์รันไทม์ C ที่นี่:
<http://msdn.microsoft.com/en-us/library/17w5ykft%28v=VS.100%29.aspx>.
ต่อไปนี้เป็นข้อสังเกตเพิ่มเติมบางส่วนจากการทดลอง: C runtime breaks
อาร์กิวเมนต์ที่ช่องว่างและส่งผ่านไปยังโปรแกรมใน argc/argv คำพูดคู่สามารถ
ใช้เพื่อป้องกันอาร์กิวเมนต์ที่มีช่องว่างในนั้นไม่ให้แยกออกจากกัน คุณสามารถใส่
อัญประกาศคู่ในอาร์กิวเมนต์โดยหลีกเลี่ยงด้วยแบ็กสแลชแล้วปิดทั้งหมด
อาร์กิวเมนต์ภายในเครื่องหมายคำพูดคู่ แบ็กสแลชและอัญประกาศคู่
รอบอาร์กิวเมนต์จะถูกถอดโดยรันไทม์ C
อักขระเปลี่ยนเส้นทางไฟล์ "<", ">" และ "|" สามารถเสนอราคาด้วยเครื่องหมายคำพูดคู่
(แม้ว่าจะมีข้อเสนอแนะว่าสิ่งนี้อาจไม่จริงเสมอไป) คำพูดเดียวคือ
ไม่ถือว่าเป็นเครื่องหมายคำพูดโดยเชลล์หรือรันไทม์ C พวกเขาจะไม่ถูกถอดโดย
เชลล์ (เพียงเพื่อให้การอ้างอิงประเภทนี้ไร้ประโยชน์อย่างสมบูรณ์) คาเร็ต "^" ก็มี
ถูกมองว่าประพฤติตัวเป็นคำพูด แต่สิ่งนี้ดูเหมือนจะเป็นเปลือก
และเครื่องหมายคาเร็ตไม่ถูกถอดออกจากบรรทัดคำสั่ง ดังนั้น Perl จึงยังเห็นอยู่
(และเฟสรันไทม์ C ไม่ถือว่าคาเร็ตเป็นอักขระอ้างอิง)
ต่อไปนี้คือตัวอย่างการใช้เชลล์ "cmd":
สิ่งนี้จะพิมพ์ doublequotes สองอัน:
perl -e "พิมพ์ '\"\"' "
สิ่งนี้ทำเช่นเดียวกัน:
perl -e "พิมพ์ \"\\\"\\\"\" "
สิ่งนี้จะพิมพ์ "bar" และเขียน "foo" ลงในไฟล์ "blurch":
perl -e "พิมพ์ 'foo'; พิมพ์ STDERR 'bar'" > blurch
สิ่งนี้พิมพ์ "foo" ("bar" หายไปในที่ห่างไกล):
perl -e "พิมพ์ 'foo'; พิมพ์ STDERR 'bar'" 2> nul
สิ่งนี้จะพิมพ์ "bar" และเขียน "foo" ลงในไฟล์ "blurch":
perl -e "พิมพ์ 'foo'; พิมพ์ STDERR 'bar'" 1> blurch
ไพพ์ "foo" ไปที่เพจเจอร์ "less" และพิมพ์ "bar" บนคอนโซล:
perl -e "พิมพ์ 'foo'; พิมพ์ STDERR 'bar'" | น้อย
ไปป์นี้ "foo\nbar\n" ไปยังเพจเจอร์ที่น้อยกว่า:
perl -le "พิมพ์ 'foo'; พิมพ์ STDERR 'bar'" 2>&1 | น้อย
ไพพ์ "foo" ไปที่เพจเจอร์และเขียน "bar" ในไฟล์ "blurch":
perl -e "พิมพ์ 'foo'; พิมพ์ STDERR 'bar'" 2> blurch | น้อย
การค้นพบประโยชน์ของเชลล์ "command.com" บน Windows 9x นั้นเหลือเป็น
การออกกำลังกายให้กับผู้อ่าน :)
ปัญหาร้ายแรงอย่างหนึ่งของเชลล์คำสั่ง 4NT สำหรับ Windows คือมัน
(เกือบ) ปฏิบัติต่ออักขระ % เสมอเพื่อบ่งชี้ว่าตัวแปรสภาพแวดล้อมการขยายตัว
มันจำเป็น. ภายใต้เชลล์นี้ ดังนั้นจึงเป็นเรื่องสำคัญที่จะต้องเพิ่ม % ใดๆ เป็นสองเท่าเสมอ
อักขระที่คุณต้องการให้ Perl เห็น (เช่น สำหรับตัวแปรแฮช) แม้ว่า
พวกเขาถูกยกมา
ส่วนต่อขยายอาคาร
เครือข่าย Perl Archive Perl ที่ครอบคลุม (CPAN) มีส่วนขยายมากมาย
ซึ่งต้องใช้คอมไพเลอร์ C เพื่อสร้าง มองเข้าไปhttp://www.cpan.org/> สำหรับข้อมูลเพิ่มเติม
ข้อมูลเกี่ยวกับ CPAN
โปรดทราบว่าส่วนขยายบางรายการจาก CPAN อาจทำงานได้ใน Windows
สิ่งแวดล้อม; คุณควรตรวจสอบข้อมูลได้ที่http://www.cpantesters.org/> เมื่อก่อน
ทุ่มเทความพยายามมากเกินไปในการย้ายโมดูลที่ไม่ได้สร้างทันที
ส่วนขยายส่วนใหญ่ (ไม่ว่าจะต้องการคอมไพเลอร์ C หรือไม่) สามารถสร้าง ทดสอบ และ
ติดตั้งด้วยมนต์มาตรฐาน:
เพิร์ล Makefile.PL
$ ทำ
$ทำการทดสอบ
$ทำให้การติดตั้ง
โดยที่ $MAKE คือโปรแกรม 'make' ใดก็ตามที่คุณกำหนดค่า Perl ให้ใช้ ใช้ "perl
-V:make" เพื่อค้นหาว่านี่คืออะไร ส่วนขยายบางตัวอาจไม่มีชุดทดสอบ (so
"การทดสอบ $MAKE" อาจไม่ทำอะไรหรือล้มเหลว) แต่สิ่งที่จริงจังที่สุดทำ
เป็นสิ่งสำคัญที่คุณต้องใช้โปรแกรม 'make' ที่รองรับ และต้องแน่ใจว่า Config.pm รู้
เกี่ยวกับมัน. หากคุณไม่มี nmake คุณสามารถรับ dmake จากที่ตั้ง
ที่กล่าวถึงก่อนหน้านี้หรือรับ nmake เวอร์ชันเก่าที่รายงานว่ามีให้จาก:
<http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/nmake15.exe>
อีกทางเลือกหนึ่งคือใช้ make เขียนเป็น Perl ซึ่งหาได้จาก CPAN
<http://www.cpan.org/modules/by-module/Make/>
คุณสามารถใช้ dmake ดู "สร้าง" ด้านบนเกี่ยวกับวิธีการรับ
โปรดทราบว่าจริง ๆ แล้ว MakeMaker ปล่อย makefile ด้วยไวยากรณ์ที่แตกต่างกันขึ้นอยู่กับอะไร
'ทำให้' คิดว่าคุณกำลังใช้ ดังนั้นจึงเป็นเรื่องสำคัญที่ข้อใดข้อหนึ่งต่อไปนี้
ค่าปรากฏใน Config.pm:
make='nmake' # MakeMaker ปล่อย nmake syntax
make='dmake' # MakeMaker ปล่อย dmake syntax
ค่าอื่นใด # MakeMaker ปล่อยไวยากรณ์ make ทั่วไป
(เช่น GNU make หรือ Perl make)
หากค่าไม่ตรงกับโปรแกรม 'make' ที่คุณต้องการใช้ ให้แก้ไข Config.pm เพื่อแก้ไข
มัน
หากโมดูลใช้ XSUB คุณจะต้องมีคอมไพเลอร์ C ตัวใดตัวหนึ่งที่รองรับ คุณ
ต้องแน่ใจว่าคุณได้ตั้งค่าสภาพแวดล้อมสำหรับคอมไพเลอร์สำหรับ command-line
คอมไพล์ก่อนรัน "perl Makefile.PL" หรือการเรียกใช้ make
หากโมดูลไม่ได้สร้างด้วยเหตุผลบางอย่าง ให้ค้นหาอย่างรอบคอบว่าทำไมจึงล้มเหลวและ
รายงานปัญหาไปยังผู้สร้างโมดูล หากดูเหมือนการสนับสนุนการสร้างส่วนขยาย
มีความผิด ให้รายงานว่ามีรายละเอียดทั้งหมดว่าบิลด์ล้มเหลวโดยใช้ perlbug . อย่างไร
ประโยชน์
การขยายสัญลักษณ์ตัวแทนบรรทัดคำสั่ง
เชลล์คำสั่งเริ่มต้นบนระบบปฏิบัติการที่สืบทอดมาจาก DOS (เช่นที่เป็นอยู่)
มักจะไม่ขยายอาร์กิวเมนต์ไวด์การ์ดที่ให้มากับโปรแกรม พวกเขาคิดว่ามัน
งานของแอปพลิเคชันที่จะจัดการกับสิ่งนั้น ซึ่งทำได้โดยทั่วไปโดยการเชื่อมโยง
แอปพลิเคชัน (ในกรณีของเราคือ Perl) พร้อมรหัสเริ่มต้นที่ไลบรารีรันไทม์ C มักจะ
จัดเตรียม. อย่างไรก็ตาม การทำเช่นนี้ส่งผลให้เวอร์ชัน Perl เข้ากันไม่ได้ (เนื่องจาก
ลักษณะการทำงานของรหัสขยาย argv นั้นแตกต่างกันไปตามคอมไพเลอร์ และมันเท่ากัน
บั๊กกี้ในคอมไพเลอร์บางตัว) นอกจากนี้ อาจเป็นที่มาของความหงุดหงิดหากคุณใช้ข้อมูลดังกล่าว
ไบนารี Perl ที่มีเชลล์สำรองที่ *ไม่* ขยายไวด์การ์ด
วิธีแก้ไขปัญหาต่อไปนี้ใช้ได้ผลค่อนข้างดี สิ่งที่ดีเกี่ยวกับมันคือ 1) คุณ
เริ่มใช้งานได้ทันที 2) มีพลังมากกว่าเพราะจะทำให้ถูกต้อง
สิ่งที่มีรูปแบบเช่น */*/*.c; 3) คุณสามารถตัดสินใจได้ว่าจะทำ/ไม่ต้องการใช้หรือไม่
มัน; และ 4) คุณสามารถขยายวิธีการเพิ่มการปรับแต่งใดๆ (หรือแม้แต่ทั้งหมด
การขยายไวด์การ์ดประเภทต่างๆ)
C:\> คัดลอก con c:\perl\lib\Wild.pm
# Wild.pm - จำลองเชลล์ @ARGV ขยายบนเชลล์ที่ไม่ได้
ใช้ไฟล์::DosGlob;
@ARGV = แผนที่ {
my @g = ไฟล์::DosGlob::glob($_) if /[*?]/;
@NS ? @g : $_;
} @ARGV;
1;
^Z
C:\> ตั้งค่า PERL5OPT=-MWild
C:\> perl -le "สำหรับ (@ARGV) { พิมพ์ }" */*/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
โปรดทราบว่ามีสองขั้นตอนที่แตกต่างกัน: 1) คุณจะต้องสร้าง Wild.pm และวางไว้
ในไดเร็กทอรี perl lib ของคุณ 2) คุณจะต้องตั้งค่าตัวแปรสภาพแวดล้อม PERL5OPT
หากคุณต้องการให้การขยาย argv เป็นค่าเริ่มต้น เพียงตั้งค่า PERL5OPT เป็นค่าเริ่มต้นของคุณ
สภาพแวดล้อมการเริ่มต้น
หากคุณกำลังใช้คอมไพเลอร์ Visual C คุณสามารถรับบรรทัดคำสั่งของรันไทม์ C ได้
การขยายสัญลักษณ์แทนที่สร้างขึ้นในไบนารี Perl ไบนารีที่ได้จะขยายออกเสมอ
บรรทัดคำสั่งที่ไม่มีเครื่องหมายคำพูด ซึ่งอาจไม่ใช่สิ่งที่คุณต้องการหากคุณใช้เชลล์ที่ทำ
สำหรับคุณ การขยายทำได้ค่อนข้างมีประสิทธิภาพน้อยกว่าวิธีการ
แนะนำข้างต้น
หมายเหตุเกี่ยวกับ Windows® 64 บิต
Windows .NET Server รองรับโมเดลข้อมูล LLP64 บนสถาปัตยกรรม Intel Itanium
โมเดลข้อมูล LLP64 แตกต่างจากโมเดลข้อมูล LP64 ที่เป็นบรรทัดฐานบน 64-บิต
แพลตฟอร์มยูนิกซ์ ในอดีต "int" และ "long" เป็นประเภทข้อมูล 32 บิตทั้งคู่ ในขณะที่
พอยน์เตอร์กว้าง 64 บิต นอกจากนี้ยังมีอินทิกรัลกว้าง 64 บิตแยกต่างหาก
พิมพ์ "__int64" ในทางตรงกันข้าม โมเดลข้อมูล LP64 ที่แพร่หลายบนแพลตฟอร์ม Unix
ระบุ "int" เป็นประเภท 32 บิต ในขณะที่ทั้งประเภท "ยาว" และพอยน์เตอร์เป็นของ
ความแม่นยำ 64 บิต โปรดทราบว่าทั้งสองรุ่นมีการกำหนดแอดเดรส 64 บิต
Windows 64 บิตที่ทำงานบน Itanium สามารถเรียกใช้ไบนารี x32 แบบ 86 บิตได้
โปร่งใส ซึ่งหมายความว่าคุณสามารถใช้ Perl รุ่น 32 บิตบน 64-บิต
ระบบ. จากสิ่งนี้ เหตุใดจึงต้องการสร้าง Perl รุ่น 64 บิต นี่
เหตุผลบางประการที่คุณจะรำคาญ:
· แอปพลิเคชัน 64 บิตแบบเนทีฟจะทำงานได้อย่างมีประสิทธิภาพมากขึ้นบนฮาร์ดแวร์ Itanium
· ไม่มีการจำกัดขนาดกระบวนการ 2GB
· Perl ให้การสนับสนุนไฟล์ขนาดใหญ่โดยอัตโนมัติเมื่อสร้างภายใต้ Windows 64 บิต
· การฝัง Perl ในแอปพลิเคชัน 64 บิต
เล่น Perl สคริปต์
สคริปต์ Perl บน UNIX ใช้ "#!" (aka "shebang") บรรทัดเพื่อระบุ OS ที่มัน
ควรรันไฟล์โดยใช้ Perl วินโดว์ไม่มีทางเทียบเคียงเพื่อบ่งชี้ถึงความพลั้งเผลอ
ไฟล์เป็นไฟล์ปฏิบัติการ
วิธีที่มีอยู่ทั้งหมดในการรันไฟล์ข้อความธรรมดาบน Windows นั้นขึ้นอยู่กับไฟล์
"ส่วนขยาย". มีสามวิธีในการใช้สิ่งนี้เพื่อรันสคริปต์ Perl:
1. มีสิ่งอำนวยความสะดวกที่เรียกว่า "การเชื่อมโยงนามสกุลไฟล์" สิ่งนี้สามารถจัดการได้
ผ่านสองคำสั่ง "assoc" และ "ftype" ที่มาพร้อมกับ Windows พิมพ์
"ประเภท f /?" สำหรับตัวอย่างที่สมบูรณ์ของวิธีตั้งค่านี้สำหรับสคริปต์ Perl (Say
อะไร? คุณคิดว่า Windows ไม่พร้อมสำหรับ Perl? :).
2. เนื่องจากการเชื่อมโยงไฟล์ใช้งานไม่ได้ทุกที่ และมีรายงานข้อบกพร่องด้วย
ความสัมพันธ์ของไฟล์ที่มันทำงาน วิธีเก่าในการห่อสคริปต์ Perl
เพื่อให้ดูเหมือนไฟล์แบตช์ปกติของ OS อาจใช้ การติดตั้ง
กระบวนการทำให้สคริปต์ "pl2bat.bat" พร้อมใช้งาน ซึ่งสามารถใช้ในการห่อperl
สคริปต์ลงในไฟล์แบตช์ ตัวอย่างเช่น:
pl2bat fo.pl
จะสร้างไฟล์ "FOO.BAT" หมายเหตุ "pl2bat" ตัดส่วนต่อท้าย .pl และเพิ่ม a
.bat ต่อท้ายไฟล์ที่สร้างขึ้น
หากคุณใช้ 4DOS/NT หรือเชลล์คำสั่งที่คล้ายกัน โปรดทราบว่า "pl2bat" ใช้ "%*"
ตัวแปรในไฟล์แบตช์ที่สร้างขึ้นเพื่ออ้างถึงอาร์กิวเมนต์บรรทัดคำสั่งทั้งหมด
ดังนั้นคุณอาจต้องตรวจสอบให้แน่ใจว่าโครงสร้างนั้นใช้งานได้ในไฟล์แบตช์ ณ บัดนี้
การเขียน ผู้ใช้ 4DOS/NT จะต้องมีคำสั่ง "ParameterChar = *" ใน 4NT.INI
หรือจะต้องดำเนินการ "setdos /p*" ในไฟล์เริ่มต้น 4DOS/NT เพื่อเปิดใช้งาน
นี้ในการทำงาน
3. การใช้ "pl2bat" มีปัญหาเล็กน้อย: ชื่อไฟล์มีการเปลี่ยนแปลง ดังนั้นสคริปต์ที่
พึ่งพา $0 เพื่อค้นหาสิ่งที่พวกเขาต้องทำอาจทำงานไม่ถูกต้อง วิ่ง "pl2bat"
ทำซ้ำเนื้อหาของสคริปต์ต้นฉบับและเพื่อให้กระบวนการนี้สามารถ
การบำรุงรักษาอย่างเข้มข้นหากต้นฉบับได้รับการปรับปรุงบ่อยครั้ง แนวทางที่แตกต่าง
ที่หลีกเลี่ยงปัญหาทั้งสองได้
มีสคริปต์ชื่อ "runperl.bat" ซึ่งสามารถคัดลอกไปยังชื่อไฟล์ใดก็ได้
(พร้อมกับคำต่อท้าย .bat) ตัวอย่างเช่น ถ้าคุณเรียกมันว่า "foo.bat" มันจะทำงาน
ไฟล์ "foo" เมื่อดำเนินการ เนื่องจากคุณสามารถเรียกใช้แบตช์ไฟล์บน Windows
แพลตฟอร์มเพียงแค่พิมพ์ชื่อ (โดยไม่ต้องมีนามสกุล) การดำเนินการนี้อย่างมีประสิทธิภาพ
ไฟล์ "foo" เมื่อคุณพิมพ์ "foo" หรือ "foo.bat" ด้วยวิธีการนี้
"foo.bat" อาจอยู่ในตำแหน่งอื่นที่ไม่ใช่ไฟล์ "foo" ตราบใดที่
"foo" มีอยู่ใน PATH หากสคริปต์ของคุณอยู่ในระบบไฟล์
ที่อนุญาตลิงก์สัญลักษณ์ คุณยังสามารถหลีกเลี่ยงการคัดลอก "runperl.bat" ได้อีกด้วย
นี่คือการเบี่ยงเบน: คัดลอก "runperl.bat" เป็น "runperl" แล้วพิมพ์ "runperl" อธิบาย
พฤติกรรมที่สังเกตได้หรือขาดมัน :) คำแนะนำ: .gnidnats llits er'uoy fi
,"lrepnur" eteled :tniH
เบ็ดเตล็ด สถานที่
มีการติดตั้งเอกสาร HTML ครบชุด ดังนั้นคุณควรจะใช้งานได้หากคุณมี
เว็บเบราว์เซอร์ที่ติดตั้งในระบบของคุณ
"perldoc" เป็นเครื่องมือที่มีประโยชน์สำหรับการเรียกดูข้อมูลที่มีอยู่ในเอกสารประกอบ
โดยเฉพาะอย่างยิ่งเมื่อใช้ร่วมกับเพจเจอร์เช่น "น้อย" (เวอร์ชันล่าสุดที่มี Windows
สนับสนุน). คุณอาจต้องตั้งค่าตัวแปรสภาพแวดล้อม PAGER เพื่อใช้เพจเจอร์เฉพาะ
"perldoc -f foo" จะพิมพ์ข้อมูลเกี่ยวกับตัวดำเนินการ perl "foo"
ข้อผิดพลาดทั่วไปอย่างหนึ่งเมื่อใช้พอร์ตนี้กับไลบรารี GUI เช่น "Tk" คือสมมติว่า
พฤติกรรมปกติของ Perl ในการเปิดหน้าต่างบรรทัดคำสั่งจะหายไป นี่ไม่ใช่
กรณี. หากคุณต้องการเริ่มสำเนาของ "perl" โดยไม่ต้องเปิดหน้าต่างบรรทัดคำสั่ง ให้ใช้
ไฟล์เรียกทำงาน "wperl" ที่สร้างขึ้นระหว่างกระบวนการติดตั้ง การใช้งานเหมือนกันทุกประการ
ตามปกติ "perl" บน Windows ยกเว้นตัวเลือกเช่น "-h" จะไม่ทำงาน (เนื่องจากต้องใช้ a
หน้าต่างบรรทัดคำสั่งที่จะพิมพ์ไปยัง)
หากคุณพบข้อบกพร่องใน Perl คุณสามารถเรียกใช้ "perlbug" เพื่อสร้างรายงานข้อบกพร่อง (คุณอาจต้อง
ส่งด้วยตนเองหาก "perlbug" ไม่พบจดหมายในระบบของคุณ)
ใช้ perlwin32 ออนไลน์โดยใช้บริการ onworks.net