我不是一个perl程序员。我刚安装了perl并尝试使用它运行PERL脚本,它在调试模式下给出了以下错误:
Win32 :: OLE在调试模式下运行:_Unique => 1点 C:/strawberry/perl/vendor/lib/Win32/OLE/Lite.pm第30行。 需要在C:/strawberry/perl/vendor/lib/Win32/OLE.pm第48行调用的Win32 / OLE / Lite.pm 要求在C:\ Users \ c_desaik \ Desktop \ pwrdb \ offtarget \ pwrdb.pl第37行调用Win32 / OLE.pm main :: BEGIN()在C:/strawberry/perl/vendor/lib/Win32/OLE/Lite.pm第0行调用 在C:/strawberry/perl/vendor/lib/Win32/OLE/Lite.pm第0行调用eval {...} main :: /(C:\ Users \ c_desaik \ Desktop \ pwrdb \ offtarget \ pwrdb.pl:53):53:
my $ prod_id =“QPSTAtmnServer.Application”;
我几乎不明白它试图传达的内容,但听起来我在我的包库中缺少OLE.pm文件。所以我搜索了它,我发现以下链接:
http://cpansearch.perl.org/src/JDB/Win32-OLE-0.1711/lib/Win32/OLE.pm
嗯,没有链接说下载。我甚至不确定如何将此源代码添加到我的库中。我应该在记事本中复制soruce代码并将其保存为pm文件或做其他事情吗?
任何帮助?
答案 0 :(得分:6)
我注意到这类问题经常出现,所以我会输入一个可以作为任何人快速介绍的一般答案。
原来如此!
您通常会以三种方式之一获取模块:
CPAN提供了一个相当全面的指南:How to install CPAN Perl modules。根据您安装的Perl工具,您可以在命令行上尝试其中一个:
cpan install Some::Module
cpanm Some::Module
由于你在Windows上,我会提到Strawberry Perl应该安装两种工具。
如果您在Github或其他一些开源软件仓库上找到了构建就绪模块,那么无论如何它都可以在CPAN上使用。如果不是,或者如果您想安装开发版本,大多数成熟的模块将包含克隆和构建的快速说明。检查项目的自述文件!
在克隆之后,这样的事情很受欢迎:
perl Build.PL
./Build
./Build test
./Build install
以上是Module::Build提供的一套脚本操作,这是一种用于组合模块以供分发的流行机制。
一个寂寞的模块文件将不包含任何测试或安装脚本。我很担心信任这些模块,但可以使用它们。
您可能需要通过上面列出的任一方法安装各种依赖项。根据我的经验,大多数这些临时模块本身并不期望“安装”,而只能留在当前项目的根目录中。
答案 1 :(得分:3)
一个非常非常重要的问题:
如果你有Strawberry Perl,你将使用名为cpan的命令行实用程序。对于那些习惯使用GUI的人来说,这可能有点令人生畏。首先,您必须运行它,因此它可以配置本身。大部分配置都非常自动,你可以简单地接受默认值。
配置完成后,您可能需要再次运行cpan
。 *.pm
后缀代表Perl模块,您必须安装缺少的Perl模块。让我们再次看一下你的错误信息:
Win32 :: OLE在调试模式下运行:_Unique => 1 C:/ strawberry / perl / vendor / lib / Win32 / OLE / Lite.pm 第30行。要求在C:/ strawberry /中调用 Win32 / OLE / Lite.pm perl / vendor / lib / Win32 / OLE.pm 第48行需要在C:\ Users \ c_desaik \ Desktop \ pwrdb \ offtarget \ pwrdb中调用 Win32 / OLE.pm 。 pl line 37 main :: BEGIN()调用C:/ 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:my $ prod_id =`“QPSTAtmnServer.Application”;
根据这一点,你错过了两个模块:一个叫Win32::OLE::Lite
(来自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 。
现在,运行你的程序,并希望一切正常。