[英]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 Perl模块 。 根据所安装的Perl工具,您可以在命令行上尝试以下其中一种:
cpan install Some::Module
cpanm Some::Module
由于您使用的是Windows,因此我会提到Strawberry Perl应该同时安装了这两个工具。
如果您在Github或其他开放源代码存储库上找到了可构建的模块,则无论如何它都可以在CPAN上使用。 如果不是这样,或者您要安装开发版本,则大多数成熟的模块都将包含克隆和构建的快速说明。 检查项目的自述文件!
克隆后,类似这样的东西很流行:
perl Build.PL
./Build
./Build test
./Build install
上面是Module :: Build提供的一组脚本操作,这是一种流行的机制,用于将模块放在一起进行分发。
寂寞的模块文件将不包含测试或安装脚本。 我会很谨慎地信任这样的模块,但是可以使用它们。
您可能需要通过上面列出的任何一种方法来安装各种依赖项。 以我的经验,大多数临时模块都不希望本身“安装”,而只能放在当前项目的根目录中。
一个非常非常重要的问题:
如果您有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
ok
, skipped
就可以了。 运气好的话,您会看到:
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.