23

可能重复:
安装缺少的 Perl 模块的最简单方法是什么?

我正在尝试运行Perl 脚本将 SCXML 转换为 Graphviz DOT。我将脚本的第一行修改为:

#!/usr/bin/env perl

chmod +x文件。当我通过运行它时,./scmxl2dot.pl我看到以下错误输出:

在 @INC 中找不到 LWP/Simple.pm(@INC 包含:/opt/local/lib/perl5/site_perl/5.12.3/darwin-multi-2level /opt/local/lib/perl5/site_perl/5.12. 3 /opt/local/lib/perl5/vendor_perl/5.12.3/darwin-multi-2level /opt/local/lib/perl5/vendor_perl/5.12.3 /opt/local/lib/perl5/5.12.3/darwin- multi-2level /opt/local/lib/perl5/5.12.3 /opt/local/lib/perl5/site_perl /opt/local/lib/perl5/vendor_perl .) at ./scmxml2dot.pl line 14.
BEGIN failed--编译在 ./scmxml2dot.pl 第 14 行中止。

该文件的第 14 行是use LWP::Simple;

我如何:

  1. 看看我是否安装了这个东西(模块?),和/或
  2. 获取 LWP::Simple 并使其可用于脚本?

这是在 OS X 10.7.3 和 Perl 5.12.3 下运行的(如错误所示)。

4

3 回答 3

39
  1. 你已经确定你没有它(在某个地方可以找到它)。

  2. perl -MCPAN -e'install "LWP::Simple"'

于 2012-05-09T22:23:05.850 回答
6
  1. 从命令行执行以下命令:

    perl -MLWP::Simple -e 1
    

    如果您没有从上述命令中获得任何输出,则说明该模块已安装;如果出现错误,则说明未安装

  2. 安装使用

    perl -MCPAN -e'install "LWP::Simple"'
    

当 perl 遇到 use My::Module 时,它​​会遍历包含目录名称的内置 @INC 模块的元素。在每个目录中,它检查是否有一个名为“My”的子目录,以及在该子目录中是否有一个名为“Module.pm”的文件。

检查系统上 LWP::Simple 模块的安装位置,然后在代码的 use LWP::Simple 语句上方键入以下行。

    use lib '/usr/local/module';
    use LWP::Simple;
于 2012-05-09T22:22:30.287 回答
3

看看Perldoc网页。这将告诉您哪些模块是标准 Perl 模块,哪些不是。

您还可以使用perldoc命令来查明是否安装了 Perl 模块,如果安装了,请查看其文档。

$ perldoc LWP::Simple

(如果 Perldoc 不作为命令执行 do ls -l /usr/bin/perl*。在 Mac 上,某些 Perl 命令没有打开执行位。要打开它, do sudo chmod a+x /usr/bin/perl)。

它只是碰巧LWP::Simple不是标准的 Perl 模块,如果你没有它,你将不得不安装它。大多数人已经告诉过你cpan。不幸的是,默认情况下,Mac 没有安装所需的命令行开发工具。您必须安装它们

安装后,您可以使用cpan命令安装 LWP::Simple:

$ sudo cpan   #Run cpan and configure it. It takes about 3 minutes
cpan> install LWP::Simple
cpan> exit
于 2012-05-09T22:39:26.170 回答