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

时间:2013-12-19 01:15:26

标签: windows perl scripting strawberry-perl

我不是一个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文件或做其他事情吗?

任何帮助?

2 个答案:

答案 0 :(得分:6)

我注意到这类问题经常出现,所以我会输入一个可以作为任何人快速介绍的一般答案。

原来如此!

您通常会以三种方式之一获取模块:

来自CPAN(最常见)

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提供的一套脚本操作,这是一种用于组合模块以供分发的流行机制。

独立Perl文件(罕见)

一个寂寞的模块文件将不包含任何测试或安装脚本。我很担心信任这些模块,但可以使用它们。

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

答案 1 :(得分:3)

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

  • 你有Strawberry Perl,还是
  • 你有ActivePerl吗?

如果你有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

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

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

相关问题