繁体   English   中英

如何安装.pm以运行perl脚本

[英]How to install .pm to run the perl script

我不是perl程序员。 我刚刚安装了perl,并尝试使用它运行PERL脚本,它在调试模式下给了我以下错误:

Win32 :: OLE在调试模式下运行:_Unique => 1,位于C:/strawberry/perl/vendor/lib/Win32/OLE/Lite.pm第30行。需要Win32 / OLE / Lite.pm在C:/ strawberry / perl / vendor / lib / Win32 / OLE.pm第48行要求在C:\\ Users \\ c_desaik \\ Desktop \\ pwrdb \\ offtarget \\ pwrdb.pl第37行调用Win32 / OLE.pm在C:/中调用main :: BEGIN() Strawberry / perl / vendor / lib / Win32 / OLE / Lite.pm第0行eval {...}在C:/strawberry/perl/vendor/lib/Win32/OLE/Lite.pm第0行main::( C :\\ Users \\ c_desaik \\ Desktop \\ pwrdb \\ offtarget \\ pwrdb.pl:53):53:
我的$ prod_id =“ QPSTAtmnServer.Application”;

我几乎不了解它试图传达的内容,但听起来像我的包库中缺少OLE.pm文件。 所以我搜索了它,发现以下链接:

http://cpansearch.perl.org/src/JDB/Win32-OLE-0.1711/lib/Win32/OLE.pm

好吧,这里没有链接说下载。 我什至不知道如何将此源代码添加到我的库中。 我应该在记事本中复制源代码并将其保存为pm文件还是执行其他操作?

有什么帮助吗?

我注意到这类问题经常出现,因此我将输入一个一般性的答案,作为对任何人的快速介绍。

所以!

通常,您将以以下三种方式之一来获取模块:

来自CPAN(最常见)

CPAN提供了相当详尽的指南: 如何安装CPAN Perl模块 根据所安装的Perl工具,您可以在命令行上尝试以下其中一种:

cpan install Some::Module
cpanm Some::Module

由于您使用的是Windows,因此我会提到Strawberry Perl应该同时安装了这两个工具。

可构建的源代码(较少见)

如果您在Github或其他开放源代码存储库上找到了可构建的模块,则无论如何它都可以在CPAN上使用。 如果不是这样,或者您要安装开发版本,则大多数成熟的模块都将包含克隆和构建的快速说明。 检查项目的自述文件!

克隆后,类似这样的东西很流行:

perl Build.PL
./Build
./Build test
./Build install

上面是Module :: Build提供的一组脚本操作,这是一种流行的机制,用于将模块放在一起进行分发。

独立的Perl文件(稀有)

寂寞的模块文件将不包含测试或安装脚本。 我会很谨慎地信任这样的模块,但是可以使用它们。

您可能需要通过上面列出的任何一种方法来安装各种依赖项。 以我的经验,大多数临时模块都不希望本身“安装”,而只能放在当前项目的根目录中。

一个非常非常重要的问题:

  • 您是否有草莓Perl,或
  • 您有ActivePerl吗?

如果您有Strawberry Perl,则将使用名为cpan的命令行实用程序。 对于使用GUI的人来说,这可能有点令人生畏。 首先,您必须运行它,以便它可以对其进行配置 许多配置是非常自动的,您可以简单地接受默认设置。

配置完成后,您可能不得不再次运行cpan *.pm后缀代表Perl模块,您必须安装缺少的Perl模块。 让我们再次查看您的错误消息:

Win32 :: OLE在调试模式下运行:_Unique => 1 at
C:/ strawberry / perl / vendor / lib / Win32 / OLE / Lite.pm第30行。要求Win32 / OLE / Lite.pm在C:/ strawberry / perl / vendor / lib / Win32 / OLE.pm第48行要求Win32 / OLE.pm在C:\\ Users \\ c_desaik \\ Desktop \\ pwrdb \\ offtarget \\ pwrdb.pl第37行调用main :: BEGIN()在C:/ strawberry / perl / vendor / lib / Win32 / OLE / Lite中调用。 pm 0行eval {...}在C: /strawberry/perl/vendor/lib/Win32/OLE/Lite.pm处调用 main ::(C:\\ Users \\ c_desaik \\ Desktop \\ pwrdb \\ offtarget \\ pwrdb。 pl:53):53:我的$ prod_id =`“ QPSTAtmnServer.Application”;

因此,您缺少两个模块:一个模块称为Win32::OLE::Lite (来自Win32/OLE/Lite.pm ),另一个Win32/OLE/Lite.pm Win32::OLE (来自Win32/OLE

您可以转到http://search.cpan.com ,在搜索框中键入Win32::OLE::Lite ,然后您会获得Win32 :: OLE CPAN页面,其中说明了如何使用此模块。 事实证明Win32::OLE::Lite是此模块中包含的子模块。 您永远不会分开解决。

反过来,该模块可能依赖于其他模块,而其他模块可能依赖于其他模块。 不用担心,CPAN将解决所有依赖项问题。

现在,要安装此模块,只需键入以下命令:

C:\> cpan install Win32::OLE

CPAN会在输出页面填满整个屏幕。 放大阅读,并将其提交内存,因为记住每个单词绝对重要。 好吧,也许不行。 但是,如果有重要的事情,我建议您将Windows命令提示符终端屏幕缓冲区高度从300行更改为9999行。

执行此操作时,您将看到:

CPAN: CPAN::SQLite loaded ok (v0.202)
CPAN: LWP::UserAgent loaded ok (v6.04)
CPAN: Time::HiRes loaded ok (v1.9725)
Fetching with LWP:
http://cpan.strawberryperl.com/authors/01mailrc.txt.gz
CPAN: YAML::XS loaded ok (v0.38)
Fetching with LWP:
http://cpan.strawberryperl.com/modules/02packages.details.txt.gz
Fetching with LWP:
http://cpan.strawberryperl.com/modules/03modlist.data.gz
Database was generated on Tue, 10 Sep 2013 19:27:08 GMT
Updating database file ...

等等……

您会收到大量警告:

OLE.xs:5674:68: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
OLE.xs:5676:67: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
OLE.xs:5678:70: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
OLE.xs:5680:71: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
OLE.xs:5683:63: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
....

那是课程的标准。 只要您没有看到可怕的单词错误 ,就可以了。

编译之后,您将看到很多测试:

C:\perl\perl\bin\perl.exe "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib\lib',    'blib\arch')" t/*.t
t/1_nls.t ....... ok
t/2_variant.t ... ok
t/3_ole.t ....... ok
t/4_compat.t .... ok
t/5_unicode.t ... skipped: Unicode::String module not installed
t/6_event.t ..... ok
t/7_overload.t .. ok

okskipped就可以了。 运气好的话,您会看到:

All tests successful.
Files=7, Tests=112, 241 wallclock secs ( 0.09 usr +  0.03 sys =  0.13 CPU)

接下来,进行安装,您已完成。

类型:

C:\> perldoc Win32::OLE

并且,如果已安装该模块,则应该为您提供该模块上的Perl Doc

现在,运行您的程序,希望一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM