Amazon Best VPN GoSearch

OnWorks 网站图标

perlwin32 - 云端在线

在 OnWorks 免费托管服务提供商中通过 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器运行 perlwin32

这是命令 perlwin32,可以使用我们的多个免费在线工作站之一在 OnWorks 免费托管服务提供商中运行,例如 Ubuntu Online、Fedora Online、Windows 在线模拟器或 MAC OS 在线模拟器

程序:

您的姓名


perlwin32 - Windows 下的 Perl

概要


这些是在 Windows 2000 和更高版本下构建 Perl 的说明。

商品描述


在开始之前,您应该浏览一下顶层的 README 文件
Perl 发行版被解压到的目录。 确保您阅读并理解
分发此软件所依据的条款。

还要确保您阅读下面的“错误和警告”以了解此端口的已知限制。

perl 顶层的 INSTALL 文件有很多信息只与
人们在类 Unix 系统上构建 Perl。 特别是,您可以安全地忽略任何
关于“配置”的信息。

您可能还想查看另一个选项来构建一个可以运行的 perl
Windows:README.cygwin 文件,它提供了一组不同的规则来构建 perl
视窗。 这种方法可能会让你构建一个更兼容 Unix 的 perl,但是
您还需要下载和使用各种其他构建时和运行时支持
该文件中描述的软件。

这组指令旨在向用户描述所谓的 Perl 的“本机”端口
视窗平台。 这包括 32 位和 64 位 Windows 操作系统。 这
由此产生的 Perl 不需要额外的软件来运行(除了你的
操作系统)。 目前,此端口能够使用以下之一
Intel x86 架构上的编译器:

Microsoft Visual C++ 6.0 或更高版本
英特尔 C++ 编译器(实验性)
gcc by mingw.org gcc 3.4.5 或更高版本
gcc by mingw-w64.org gcc 4.4.3 或更高版本

请注意,其中最后两个实际上是相互竞争的项目,它们都提供完整的
适用于 MS Windows 的 gcc 工具链:

<http://mingw.org>
提供针对 32 位 Windows 平台的 gcc 工具链。

<http://mingw-w64.org>
提供针对 64 位 Windows 和 32 位 Windows 平台的 gcc 工具链
(尽管项目名称为“mingw-w64”,但它们不仅面向 64 位)。 他们提供
perl 支持的本地 gcc 编译器和交叉编译器
生成文件。

Microsoft Visual C++ 编译器现在也免费赠送。 它们可用
作为“Visual C++ Toolkit 2003”或“Visual C++ 2005-2013 Express Edition”(也作为一部分
“.NET Framework SDK”)并且是与“Visual C++ .NET
2003 专业版”或“Visual C++ 2005-2013 专业版”。

此端口也可以使用以下方法构建在 IA64/AMD64 上:

Microsoft Platform SDK Nov 2001(64 位编译器和工具)
MinGW64 编译器(gcc 4.4.3 或更高版本)

Windows SDK 可以从http://www.microsoft.com/>. MinGW64 编译器
可在http://mingw-w64.org>. 后者实际上是一个交叉编译器定位
WIN64。 还有一个适合构建的精简编译器(没有 java 或 gfortran)
perl 可在以下位置获得:http://strawberryperl.com/package/kmx/64_gcctoolchain/>

注意:如果您使用 32 位编译器在 64 位 Windows 操作系统上构建 perl
系统,则应将 WIN64 环境变量设置为“undef”。 此外,修剪过的
down 编译器仅在 USE_ITHREADS *= 定义(与 undef 相对)时通过测试,并且当
CFG *= Debug 行被注释掉。

此端口完全支持 MakeMaker(用于构建扩展的模块集
perl)。 因此,您应该能够构建和安装在
CPAN 站点。 有关这方面的一般提示,请参阅下面的“Windows 上的 Perl 使用提示”。

设置 Up Perl的 on Windows
根据
您需要一个“make”程序来构建源代码。 如果您使用的是 Visual C++ 或
Windows SDK 工具,nmake 可以工作。 使用 gcc 构建需要 dmake。

dmake 是一个免费提供的 make,它具有非常好的宏功能和
可并行性。

可从以下位置获得适用于 Windows 的 dmake 端口:

<http://search.cpan.org/dist/dmake/>

在您的路径上的某处获取并安装 dmake。

命令外壳
使用 Windows 附带的默认“cmd”外壳。 一些流行的版本
4DOS/NT shell 存在不兼容问题,可能会给您带来麻烦。 如果构建失败
在该外壳下,尝试使用 cmd 外壳再次构建。

确保构建目录的路径不包含空格。 构建通常
在这种情况下有效,但某些测试将失败。

Microsoft Visual C ++
Visual C++ 附带的 nmake 足以构建。 Visual C 要求
在 Visual C 成功运行之前,必须在控制台中设置某些内容。 使
一个能够运行 C 编译器的控制台,您需要事先运行
"vcvars32.bat" 文件编译 x86-32 和 x86-64 "vcvarsall.bat x64" 或
“vcvarsamd64.bat”。 在 Microsoft C 编译器产品的典型安装中,这些批处理
文件已经在你的“PATH”环境变量中,所以你可以直接输入它们
没有进入控制台的绝对路径。 如果你需要找到绝对路径
批处理文件,它通常位于 C:\Program Files\Microsoft Visual 之类的地方
Studio\VC98\Bin. 随着一些较新的 Micrsoft C 产品(大约 2004 年之后发布),
安装程序将在开始菜单中放置一个快捷方式以启动一个新的控制台窗口
已为您的目标架构(x86-32 或 x86-64 或 IA64)设置的控制台。
对于较新的编译器,您也可以选择使用较旧的批处理文件。

您还可以使用 dmake 使用 Visual C++ 进行构建; 但是,如果您设置 OSRELEASE
到“microsft”(或 Visual C dmake 所在的任何目录名称
配置存在)在您的环境中并编辑 win32/config.vc 进行更改
“make=nmake”变成“make=dmake”。 仅当您想使用时,后一步才是必不可少的
dmake 作为您使用 MakeMaker 构建扩展的默认 make。

Microsoft Visual C++ 2008-2013 速成版
这些免费版本的 Visual C++ 2008-2013 Professional 包含相同的编译器
和完整版本附带的链接器,还包含所有必要的
构建 Perl,而不是像以前那样需要单独下载 Windows SDK
版本做到了。

这些包可以通过在下载中心搜索来下载
<http://www.microsoft.com/downloads/search.aspx?displaylang=en>。 (提供准确的
链接到这些包已被证明是一项毫无意义的任务,因为链接不断变化
很经常。)

安装 Visual C++ 2008-2013 Express,然后使用例如设置您的环境

C:\Program Files\Microsoft Visual Studio 12.0\Common7\Tools\vsvars32.bat

(假设选择了默认安装位置)。

Perl 现在应该使用 win32/Makefile 构建。 您需要将该文件编辑为
首先将 CCTYPE 设置为 MSVC90FREE-MSVC120FREE 之一。

Microsoft Visual C++ 2005 速成版
这个免费版本的 Visual C++ 2005 Professional 包含相同的编译器和
完整版附带的链接器,但不包含所有必要的
构建 Perl。

您还需要下载“Windows SDK”(“Core SDK”和“MDAC SDK”)
组件是必需的)更多的头文件和库。

这些软件包都可以通过在下载中心搜索来下载
<http://www.microsoft.com/downloads/search.aspx?displaylang=en>。 (提供准确的
链接到这些包已被证明是一项毫无意义的任务,因为链接不断变化
很经常。)

尝试获取最新版本的 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

设置路径=%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 Studio 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 for Windows Server 2003 R2”。)

Perl 现在应该使用 win32/Makefile 构建。 您需要将该文件编辑为


CC类型 = MSVC80FREE

并根据上面的环境设置设置 CCHOME、CCINCDIR 和 CCLIBDIR。

Microsoft Visual C++ 工具包 2003
这个免费的工具包包含与 Visual C++ .NET 相同的编译器和链接器
2003 Professional,但不包含构建 Perl 所需的一切。

您还需要下载“平台 SDK”(“核心 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=en>。 (提供准确的
链接到这些包已被证明是一项毫无意义的任务,因为链接不断变化
很经常。)

尝试获取最新版本的 Windows SDK。 有时这些包包含
名称中的特定 Windows 操作系统版本,但实际上适用于其他操作系统版本
也。 例如,“Windows Server 2003 R2 Platform SDK”也在 Windows XP 上运行
SP2 和 Windows 2000。

首先安装 Toolkit,然后是 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

SET INCLUDE=C:\Program Files\Microsoft Visual C++ 工具包 2003\include;%PlatformSDKDir%\include;C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\include

SET LIB=C:\Program Files\Microsoft Visual C++ 工具包 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 for Windows Server 2003 R2”。)

几个必需的文件仍然会丢失:

· 当使用.res 文件时,link.exe 需要cvtres.exe。 它实际上是
由 .NET Framework SDK 安装,但位于如下位置:

C:\ WINDOWS \ Microsoft.NET \ Framework \ v1.1.4322

将它从那里复制到 %PlatformSDKDir%\Bin

· lib.exe 通常用于构建库,但 link.exe 与 / lib目录 选项
也可以使用,因此请更改 win32/config.vc 以使用它:

更改行读数:

ar='lib'

到:

ar = 链接 / lib目录'

在 C:\Program 中创建一个名为 lib.bat 的批处理文件也可能很有用
Files\Microsoft Visual C++ Toolkit 2003\bin 包含:

@ ECHO OFF
链接 / lib目录 %*

为了您可能想要构建的任何顽皮的 C 扩展模块的利益
后来明确引用“lib”而不是从
$配置{ar}。

· 需要 setargv.obj 来构建 perlglob.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 选项,然后您可以安全地从
无论如何都不需要 win32/Makefile 和 setargv.obj。

Perl 现在应该使用 win32/Makefile 构建。 您需要将该文件编辑为


CC类型 = MSVC70FREE

并根据上面的环境设置设置 CCHOME、CCINCDIR 和 CCLIBDIR。

Microsoft 平台 SDK 64 位编译器
Platform SDK 附带的 nmake 足以构建 Perl。 确保
您正在构建之后可用的“构建环境”外壳之一
从开始菜单安装 Platform SDK。

带有 gcc 的 MinGW 版本 3
Perl 可以使用来自 MinGW 版本 3 及更高版本的 gcc 编译(使用 gcc 3.4.5 和
之后)。 它可以在这里下载:

<http://www.mingw.org/>

您还需要 dmake。 有关如何获取它,请参阅上面的“制作”。

英特尔 C++ 编译器
添加了对使用英特尔 C++ 编译器的实验性支持。 编辑 win32/Makefile
并为安装了 Intel C 的 Visual C 选择正确的 CCTYPE。 还
取消注释 __ICC 以启用 Intel C on Visual C 支持。 设置构建
环境,从开始菜单运行 IA-32 Visual Studio 20__ 模式或 Intel 64 Visual
视情况为 Studio 20__ 模式。 然后像往常一样在该提示框中运行 nmake。

仅测试了英特尔 C++ 编译器 v12.1。 其他版本可能会工作。
使用英特尔 C++ 编译器代替 Visual C 具有 C99 兼容性的优势
某些 CPAN XS 模块需要它,同时保持与 Visual C 的兼容性
与 GCC 不同的目标代码和 Visual C 调试基础结构。

建筑物
· 确保您位于 perl 顶层下的“win32”子目录中。 这个目录
包含一个“Makefile”,它将与 Visual C++ 附带的 nmake 版本一起使用
或 Windows SDK,以及适用于所有支持的 dmake “makefile.mk”
编译器。 dmake 生成文件中的默认值设置为使用 MinGW/gcc 构建。

· 编辑 makefile.mk(或 Makefile,如果您使用的是 nmake)并更改
INST_DRV 和 INST_TOP。 您还可以启用各种构建标志。 这些解释
在生成文件中。

请注意,尝试使用 INST_DRV 和
INST_TOP 设置为先前构建中已存在的路径。 特别是,这
可能会导致 lib/ExtUtils/t/Embed.t 测试出现问题,该测试试图构建一个
测试程序,最终可能会针对已安装的 perl 的 lib/CORE 目录进行构建
而不是被测试的那个。

您必须确保正确设置了 CCTYPE 并且 CCHOME 指向
无论您在哪里安装编译器。

如果使用 mingw-w64.org 提供的交叉编译器进行构建,则需要取消注释
在 makefile.mk 中设置 GCCCROSS 的行。 只有在交叉时才这样做
编译器 - 即仅当 bin 文件夹不包含 gcc.exe 时。 (交叉编译器
不提供 gcc.exe、g++.exe、ar.exe 等。相反,所有这些可执行文件
以“x86_64-w64-mingw32-”为前缀。)

Visual C++ 生成文件中 CCHOME 的默认值可能不正确
一些版本。 确保默认值存在且有效。

您可能还需要注释掉 Makefile 中的“DELAYLOAD = ...”行,如果您是
使用没有最新服务包的 VC++ 6.0 并且链接器报告内部
错误。

如果你想在 perl 的 dll 中静态构建一些核心扩展,请在
STATIC_EXT 宏。

注意:64 位 Visual C++ 32 不支持 USE_6.0_BIT_INT 构建选项
编译器。

请务必仔细阅读 makefile 顶部附近的说明。

· 输入“dmake”(或“nmake”,如果你使用那个make)。

这应该建立一切。 具体来说,它会在以下位置创建 perl.exe、perl522.dll
perl 顶层,以及 lib\auto 目录下的各种其他扩展 dll。 如果
构建因任何原因失败,请确保您已正确完成前面的步骤。

如果您在构建 C 代码方面足够先进,这里有一个加快速度的建议
构建 perl,以及后来的“make test”。 尽量保持你的 PATH 环境变量
使用尽可能少的文件夹(记住保留 C 编译器的文件夹
那里)。 "C:\WINDOWS\system32" 或 "C:\WINNT\system32" 取决于您的操作系统版本
应该是 PATH 中的第一个文件夹,因为“cmd.exe”是最常启动的程序
在构建和以后的测试期间。

测试 Perl的 on Windows
输入“dmake test”(或“nmake test”)。 这将运行测试套件中的大部分测试
(许多测试将被跳过)。

应该没有测试失败。

如果您使用 Visual C++ 2013 构建,那么当前的三个测试可能会因夏令时而失败
时间相关问题: t/io/fs.t, cpan/HTTP-Tiny/t/110_mirror.t库/文件.Copy.t。 该
失败是由 VC++ 2013 中 CRT 中的错误引起的,这些错误将在未来版本中修复
VC++,正如微软在这里解释的那样:
.
同时,如果您需要固定的“stat”和“utime”功能,请查看
CPAN 分发 Win32::UTCFileTime。

如果您使用来自 www.mingw.org 的 gcc 的某些版本(例如 4.8.1)进行构建,那么
分机/POSIX/t/time.t 由于这些 gcc 构建中的已知错误,测试 17 可能会失败:请参阅
<http://sourceforge.net/p/mingw/bugs/2152/>.

如果您使用本机“cmd.exe”以外的命令外壳,则可能会发生一些测试失败,
或者如果您从包含空格的路径构建。 所以不要那样做。

如果您从 emacs shell 窗口运行测试,您可能会在 op/stat.t 中看到失败。
在这种情况下运行“dmake test-notty”。

此外,您应该确保在“make test”期间您没有任何 GNU 工具
路径中的包:一些工具包,如 Unixutils 包括一些工具(“type” for
实例),它会覆盖 Windows 并导致测试失败。 从您的路径中删除它们
同时进行测试以避免这些错误。

请报告“错误和警告”中描述的任何其他故障。

安装 of Perl的 on Windows
键入“dmake install”(或“nmake install”)。 这将把新构建的 perl 和
在 Makefile 中任何“INST_TOP”指向的库下。 它还将安装
"$INST_TOP\$INST_VER\lib\pod" 下的 pod 文档和相同的 HTML 版本
“$INST_TOP\$INST_VER\lib\pod\html”。

要使用您刚刚安装的 Perl,您需要在 PATH 中添加一个新条目
环境变量:“$INST_TOP\bin”,例如

设置 PATH=c:\perl\bin;%PATH%

如果您选择在 makefile 中取消注释“INST_VER”和“INST_ARCH”,则安装
结构有点复杂,您需要添加两个新的 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%

用法 提示 HPMC胶囊 Perl的 on Windows
环境变量
你在构建过程中设置的安装路径被编译成 perl,所以你
不需要做任何额外的事情来开始使用那个 perl(除了添加它的位置
到您的 PATH 变量)。

如果你把扩展放在不寻常的地方,你可以将 PERL5LIB 设置为路径列表
用分号分隔,您希望 perl 在其中查找库。 寻找
您可以在 perlrun 中设置的其他环境变量的描述。

您还可以控制 perl 用来运行的 shell 系统() 和反引号命令
通过 PERL5SHELL。 见 perlrun。

Perl 不依赖于注册表,但它可以查找某些默认值,如果您
选择把它们放在那里。 Perl 尝试从
“HKEY_CURRENT_USER\Software\Perl”和“HKEY_LOCAL_MACHINE\Software\Perl”。 条目在
前者覆盖后者中的条目。 以下条目中的一项或多项(包括
类型 REG_SZ 或 REG_EXPAND_SZ) 可以设置:

lib-$] 要添加到@INC 的特定于版本的标准库路径
要添加到@INC 的 lib 标准库路径
sitelib-$] 要添加到@INC 的特定于版本的站点库路径
要添加到@INC 的 sitelib 站点库路径
vendorlib-$] 要添加到@INC 的特定于版本的供应商库路径
要添加到@INC 的 vendorlib 供应商库路径
以“PERL”开头的所有 %ENV 查找的 PERL* 回退

注意上面的 $] 不是文字。 替换您想要的任何版本的 perl
尊重该条目,例如 5.6.0。 路径必须用分号分隔,像往常一样
Windows操作系统。

文件通配
默认情况下,perl 使用 File::Glob 扩展处理文件通配,它提供
便携式通配符。

如果你想让 perl 使用 globbing 来模拟 DOS 文件名约定的怪癖,
您可能需要考虑使用 File::DosGlob 来覆盖内部 地球仪()
执行。 有关详细信息,请参阅 File::DosGlob。

从命令行使用 perl
如果您习惯于在 UNIX 中找到的各种命令行 shell 中使用 perl
环境,您将不会对 Windows 通过以下方式提供的功能感到满意
命令外壳。

了解 Windows 环境的关键是命令行
在 Perl 看到它之前,您输入的内容会被处理两次。 首先,你的命令外壳
(通常是 CMD.EXE) 预处理命令行,处理重定向,环境
变量扩展和要运行的可执行文件的位置。 然后,perl 可执行文件
使用 C 运行时将剩余的命令行拆分为单独的参数
Perl 所基于的库。

需要特别注意的是,shell 和 C 运行时都不做任何事情。
命令行参数的通配符扩展(所以通配符不需要被引用)。
此外,shell 和 C 运行时的引用行为充其量只是基本的
(并且,如果您使用的是非标准外壳,则可能会不一致)。 唯一的(有用的)
引号字符是双引号 (")。它可以用来保护空格和其他
参数中的特殊字符。

Windows 文档在此处描述了 shell 解析规则:
<http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=真>
以及这里的 C 运行时解析规则:
<http://msdn.microsoft.com/en-us/library/17w5ykft%28v=VS.100%29.aspx>。

以下是基于实验的一些进一步观察:C 运行时中断
空格处的参数并将它们传递给 argc/argv 中的程序。 双引号可以
用于防止其中包含空格的参数被拆分。 你可以放一个
通过用反斜杠转义并封闭整个参数在参数中使用双引号
双引号内的参数。 反斜杠和一对双引号
围绕参数将被 C 运行时剥离。

文件重定向字符“<”、“>”和“|” 可以用双引号引用
(尽管有人建议这可能并不总是正确的)。 单引号是
不被 shell 或 C 运行时视为引号,它们不会被
shell(只是为了使这种类型的引用完全无用)。 插入符号“^”也有
被观察到表现为引用字符,但这似乎是一个外壳
特性,并且插入符号没有从命令行中剥离,所以 Perl 仍然可以看到它
(并且 C 运行时阶段不会将插入符号视为引号字符)。

以下是“cmd”shell 的一些使用示例:

这将打印两个双引号:

perl -e "打印'\"\"'"

这也是一样的:

perl -e "打印\"\\\"\\\"\" "

这将打印“bar”并将“foo”写入文件“blurch”:

perl -e "print 'foo'; print STDERR 'bar'" > 模糊

这会打印“foo”(“bar”消失在无处可去的地方):

perl -e "print 'foo'; print STDERR 'bar'" 2> nul

这将打印“bar”并将“foo”写入文件“blurch”:

perl -e "print 'foo'; print STDERR 'bar'" 1> 模糊

这将“foo”传送到“less”寻呼机并在控制台上打印“bar”:

perl -e "print 'foo'; 打印 STDERR 'bar'" | 较少的

这将 "foo\nbar\n" 传送到 less 寻呼机:

perl -le "print 'foo'; print STDERR 'bar'" 2>&1 | 较少的

这将“foo”传送到寻呼机并在文件“blurch”中写入“bar”:

perl -e "print 'foo'; print STDERR 'bar'" 2> 模糊 | 较少的

发现“command.com”shell 在 Windows 9x 上的用处被留下作为
给读者练习:)

用于 Windows 的 4NT 命令外壳的一个特别有害的问题是它
(几乎)总是将 % 字符视为表示环境变量扩展
需要。 因此,在此外壳下,始终将任何 % 加倍很重要
您希望 Perl 看到的字符(例如,对于散列变量),即使在
他们被引用。

建筑扩展
综合 Perl 档案网络 (CPAN) 提供了丰富的扩展,其中一些
这需要一个 C 编译器来构建。 在看http://www.cpan.org/> 了解更多
关于 CPAN 的信息。

请注意,并非 CPAN 提供的所有扩展都可以在 Windows
环境; 你应该检查信息http://www.cpantesters.org/> 之前
在移植不容易构建的模块上投入太多精力。

大多数扩展(无论是否需要 C 编译器)都可以构建、测试和
安装标准咒语:

perl 生成文件.PL
$制作
$MAKE 测试
$MAKE 安装

其中 $MAKE 是您配置 perl 使用的任何“make”程序。 使用“perl
-V:make" 以找出这是什么。某些扩展可能不提供测试套件(因此
“$MAKE test”可能不会做任何事情或失败),但最严重的会做。

使用受支持的“make”程序很重要,并确保 Config.pm 知道
关于它。 如果您没有 nmake,则可以从该位置获取 dmake
之前提到过,或者从以下地址获取旧版本的 nmake:

<http://download.microsoft.com/download/vc15/Patch/1.52/W95/EN-US/nmake15.exe>

另一种选择是使用用 Perl 编写的 make,可从 CPAN 获得。

<http://www.cpan.org/modules/by-module/Make/>

您也可以使用 dmake。 有关如何获取它,请参阅上面的“制作”。

请注意,MakeMaker 实际上会根据内容发出具有不同语法的 makefile
'make' 它认为你正在使用。 因此,重要的是以下之一
值出现在 Config.pm 中:

make='nmake' # MakeMaker 发出 nmake 语法
make='dmake' # MakeMaker 发出 dmake 语法
任何其他值 # MakeMaker 发出通用的 make 语法
(例如 GNU make 或 Perl make)

如果该值与您要使用的“make”程序不匹配,请编辑 Config.pm 进行修复
它。

如果模块实现 XSUB,您将需要一种受支持的 C 编译器。 你
必须确保您已经为命令行设置了编译器环境
在运行“perl Makefile.PL”或任何 make 调用之前编译。

如果某个模块由于某种原因没有构建,请仔细查找失败的原因,并且
向模块作者报告问题。 如果它看起来像扩展构建支持
有问题,请报告有关使用 perlbug 构建失败的详细信息
效用。

命令行通配符扩展
DOS 后代操作系统上的默认命令 shell(例如它们)
通常不扩展提供给程序的通配符参数。 他们认为这是
应用程序的工作来处理那个。 这通常是通过链接来实现的
应用程序(在我们的例子中是 perl)带有 C 运行时库通常的启动代码
提供。 但是,这样做会导致不兼容的 perl 版本(因为
argv 扩展代码的行为因编译器而异,甚至
在某些编译器上有问题)。 此外,如果您使用此类,可能会令人沮丧
一个 perl 二进制文件,带有一个 * 确实 * 扩展通配符的备用 shell。

相反,以下解决方案效果很好。 关于它的好处是 1) 你
可以马上开始使用; 2)它更强大,因为它会做正确的事
像 */*/*.c 这样的模式的东西; 3)您可以决定是否使用/不想使用
它; 和 4)您可以扩展该方法以添加任何自定义(甚至完全
不同种类的通配符扩展)。

C:\> 复制 con c:\perl\lib\Wild.pm
# Wild.pm - 在不支持的 shell 上模拟 shell @ARGV 扩展
使用 File::DosGlob;
@ARGV = 地图 {
我的@g = File::DosGlob::glob($_) if /[*?]/;
@G ? @g : $_;
@ARGV;
1;
^Z
C:\> 设置 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

请注意,那里有两个不同的步骤:1)您必须创建 Wild.pm 并将其放入
在你的 perl lib 目录中。 2) 您需要设置 PERL5OPT 环境变量。
如果您希望 argv 扩展成为默认值,只需在默认值中设置 PERL5OPT
启动环境。

如果您使用的是 Visual C 编译器,则可以获得 C 运行时的命令行
perl 二进制文件中内置的通配符扩展。 生成的二进制文件将始终展开
不带引号的命令行,如果你使用的 shell 可能不是你想要的
给你的。 完成的扩展也有点不如方法强大
以上建议。

64 位 Windows 的注意事项
Windows .NET Server 支持英特尔安腾架构上的 LLP64 数据模型。

LLP64 数据模型不同于 64 位规范的 LP64 数据模型
Unix 平台。 在前者中,“int”和“long”都是 32 位数据类型,而
指针是 64 位宽的。 此外,还有一个单独的 64 位宽整数
类型,“__int64”。 相比之下,在 Unix 平台上普遍存在的 LP64 数据模型
提供“int”作为32位类型,而“long”类型和指针都是
64 位精度。 请注意,两种模型都提供 64 位寻址能力。

在 Itanium 上运行的 64 位 Windows 能够运行 32 位 x86 二进制文件
透明地。 这意味着您可以在 32 位上使用 Perl 的 64 位构建
系统。 鉴于此,为什么要构建 64 位版本的 Perl? 这里有
你会打扰的一些原因:

· 64 位本机应用程序将在 Itanium 硬件上更高效地运行。

· 进程大小没有 2GB 的限制。

· Perl 在 64 位 Windows 下构建时自动提供大文件支持。

· 在 64 位应用程序中嵌入 Perl。

运行 Perl的 脚本
UNIX 上的 Perl 脚本使用“#!” (又名“shebang”)行向操作系统表明它
应该使用 perl 执行文件。 Windows 没有可比的方法来指示任意
文件是可执行文件。

相反,在 Windows 上执行纯文本文件的所有可用方法都依赖于文件
“延期”。 有三种方法可以使用它来执行 perl 脚本:

1. 有一个工具叫做“文件扩展名关联”。 这可以被操纵
通过 Windows 标准的两个命令“assoc”和“ftype”。 类型
“ftype /?” 有关如何为 perl 脚本进行设置的完整示例(例如
什么? 你认为 Windows 还没有准备好 perl 吗? :)。

2.由于文件关联并非在所有地方都有效,而且据报道存在错误
它起作用的文件关联,包装 perl 脚本的旧方法
为了使它看起来像操作系统的常规批处理文件,可以使用。 安装
进程使“pl2bat.bat”脚本可用,该脚本可用于包装 perl
脚本成批处理文件。 例如:

pl2bat foo.pl

将创建文件“FOO.BAT”。 注意“pl2bat”去掉任何 .pl 后缀并添加一个
.bat 后缀到生成的文件。

如果您使用 4DOS/NT 或类似的命令外壳,请注意“pl2bat”使用“%*”
生成的批处理文件中的变量以引用所有命令行参数,
所以你可能需要确保构造在批处理文件中工作。 至此
写作,4DOS/NT 用户将需要在他们的 4NT.INI 中使用“ParameterChar = *”语句
文件或需要在 4DOS/NT 启动文件中执行“setdos /p*”才能启用
这工作。

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”也是浏览文档中包含的信息的有用工具,
尤其是与“less”之类的寻呼机(最近的版本有 Windows
支持)。 您可能必须设置 PAGER 环境变量才能使用特定的寻呼机。
"perldoc -f foo" 将打印有关 perl 操作符 "foo" 的信息。

将此端口与诸如“Tk”之类的 GUI 库一起使用时,一个常见的错误是假设
Perl 打开命令行窗口的正常行为将消失。 这不是
案件。 如果您想在不打开命令行窗口的情况下启动“perl”的副本,请使用
在安装过程中构建的“wperl”可执行文件。 用法完全一样
作为 Windows 上的普通“perl”,除了像“-h”这样的选项不起作用(因为它们需要一个
要打印到的命令行窗口)。

如果您发现 perl 中的错误,您可以运行“perlbug”来创建错误报告(您可能必须
如果“perlbug”在您的系统上找不到邮件程序,请手动发送)。

使用 onworks.net 服务在线使用 perlwin32


免费服务器和工作站

下载 Windows 和 Linux 应用程序

Linux 命令

Ad




×
广告
❤️在这里购物、预订或购买——免费,有助于保持服务免费。