2014-03-26 16 views
1

我試圖用File::Slurp模塊:無法找到Perl模塊,即使cpanm聲稱它是最新的

use v5.14; 
use warnings; 
use File::Slurp; 

my $text = read_file('test.txt') ; 

但是當我運行此我得到錯誤:

Can't locate File/Slurp.pm in @INC (@INC contains: /home/fcihh/perl5/lib/perl5/x86_64-linux-gnu-thread-multi /home/fcihh/perl5/lib/perl5 /home/fcihh/perl5/lib/perl5/x86_64-linux-gnu-thread-multi /home/fcihh/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 ./p.perl line 5. 

運行cpanm File::Slurp給:

File::Slurp is up to date. (9999.19) 
+0

嘗試運行這個命令:'的perldoc -l文件:: Slurp',看看它給你。這就是'File :: Slurp'存儲位置。如果'perldoc'什麼都沒有出現,請嘗試使用'cpan'而不是'cpanm',這會是'cpan install File :: Slurp'。或以交互模式運行'cpan'。 –

+0

謝謝! 'cpan install File :: Slurp'工作..''perldoc -l File :: Slurp'給出'沒有找到「File :: Slurp」的文檔.' –

+0

這意味着'cpan'和'perldoc'shebang是腳本使用的相同'perl','cpanm'的shebang是針對其他Perl的。 – ikegami

回答

5

有可能涉及兩個perl。執行以下,使用相同的perl如您使用的是執行該腳本(指定路徑如果必要的話):

perl -e'use CPAN; install "File::Slurp"' 

你既然提到您cpan(不像你cpanm)配置使用相同的perl如您使用的是執行腳本,所以你可以簡單地使用

cpan File::Slurp 
+0

謝謝,根據@DawidW –

+0

的評論,我已經通過使用'cpan'而不是'cpanm'解決了這個問題''cpan'可以很容易地將錯誤的'perl'用作'cpanm'。基本上,我展示瞭如何使用正確的'perl'來獲得'cpan'。你很幸運,你不需要。你有一個不可思議的系統。 – ikegami