2

にperlモジュールをインストールします~/.local/perl5。ここにの一部があり~/.bashrcます:

export PERL_LOCAL_LIB_ROOT="$HOME/.local/perl5";
export PERL_MB_OPT="--install_base $HOME/.local/perl5";
export PERL_MM_OPT="INSTALL_BASE=$HOME/.local/perl5";
export PERL5LIB="$HOME/.local/perl5/lib/perl5:$PERL5LIB";
export PATH="$HOME/.local/perl5/bin:$PATH";

でインストールCSS::Inlinerしました

$ cpan
cpan[1]> install CSS::Inliner

そして私はに持ってInliner.pmいます:

~/.local/perl5/lib/perl5/CSS/Inliner.pm

しかし、私がuseそれをしたとき-perlはそれを見つけることができません:

perl -e 'use Inliner'

与える:

Can't locate Inliner.pm in @INC (@INC contains:
/home/boris/.local/perl5/lib/perl5/x86_64-linux-gnu-thread-multi
/home/boris/.local/perl5/lib/perl5 /etc/perl
/usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5
/usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14
/usr/local/lib/site_perl .) at -e line 1. BEGIN failed--compilation
aborted at -e line 1.

なぜperlはモジュールを見つけることができないのですか?

編集

CSS-Inlinerのドキュメントに記載されている最小限の作業例を再現しようとしています。

use Inliner;

my $inliner = new Inliner();

$inliner->read_file({filename => 'myfile.html'});

print $inliner->inlinify();

もし私use Inlinerが-perlがそれを見つけることができないなら。もし私が

#!/usr/bin/perl

use CSS::Inliner;

my $inliner = new Inliner();

$inliner->read_file({filename => 'test.html'});

print $inliner->inlinify();

perlは言う

Can't locate object method "new" via package "Inliner"
(perhaps you forgot to load "Inliner"?) at ./1.perl line 5.

編集2

最小限の作業例を次に示しCSS-Inlinerます。

#!/usr/bin/perl

use CSS::Inliner;

my $inliner = CSS::Inliner->new;

$inliner->read_file({filename => 'test.html'});

print $inliner->inlinify();
4

2 に答える 2

3

useクラスメソッドを呼び出すときは、完全なモジュール名と完全なクラス名を使用する必要があります。

use CSS::Inliner;
my $inliner = CSS::Inliner->new;
于 2013-03-14T07:29:38.757 に答える
0

これは、モジュールのインストールに注意しないと発生する可能性があります。foo.pmを公式の/usr/ lib / perl5/site_perlディレクトリにコピーしただけです。foo.pmは、ローカルまたはサードパーティで開発されたモジュールである可能性があります。私はumaskに注意を払いませんでした。そこにインストールされているファイルは、世界中で読み取ることができません。モジュールを使用すると、「@ INCでfoo.pmが見つかりません(@INCには/ usr / lib / perl5 / site_perl ....が含まれています)」というメッセージが表示されます。ええ、それは明らかにそこにあります!ファイルのアクセス許可を確認するのに少し時間がかかりました。これにより、独自のモジュールをインストールする他の人の時間を節約できることを願っています。makeファイルでは、install -m 644を使用して、インストールされたモジュールが他のモジュールの読み取り権限を持っていることを確認する必要があります。

于 2016-05-14T17:39:54.140 に答える