2011-12-27 7 views
2

我有這樣的腳本:(Script.pl)在Runtime.pm中找不到OAuth.pm。網:: Twitter的模塊

#!/usr/bin/perl 
use strict; 
use warnings; 
use encoding 'utf-8'; 
use FindBin; 
use lib "$FindBin::Bin/lib"; 
use TwitterModule; 
use IO::Prompt; 

# Read keys from file 
open KEYS, "<keys.txt" or die $!; 
my ($ckey, $csecret, $atocken, $asecret) = <KEYS>; 

# Auth 
my $nt = TwitterModule::auth($ckey, $csecret, $atocken, $asecret) ; 

# Other code skipped. 

和這樣的模塊:(LIB/TwitterModule.pm)

package TwitterModule; 
use strict; 
use warnings; 
use utf8; 
use encoding 'utf8'; 
use base 'Exporter'; 
use Net::Twitter; 

BEGIN { 
    use Exporter(); 

    our $VERSION = '0.01b'; 
    our @EXPORT_OK = qw(&auth); 
    our %EXPORT_TAGS = (
     'functions' => [ qw(&auth) ] 
    ); 

    # add all the other ":class" tags to the ":all" class, deleting duplicates 

    my %seen; 
    push @{$EXPORT_TAGS{all}}, 
     grep {!$seen{$_}++} @{$EXPORT_TAGS{$_}} foreach keys %EXPORT_TAGS; 
} 

### Common variables ### 
# Make connection 
sub auth { 
    my ($ckey, $csecret, $atocken, $asecret) = @_; 

    my $cn = Net::Twitter->new(
     traits    => [qw/Oauth API::REST/], 
     consumer_key  => $ckey, 
     consumer_secret  => $csecret, 
     access_tocken  => $atocken, 
     access_token_secret => $asecret 
    ); 
    return $cn; 
} 

# Other code skipped 
# return true 
1 

然後,我執行我的劇本,並得到它:「@INC中無法找到Net/Twitter/Role/Oauth.pm(@INC包含:/ home/rasmi/work/my_project/lib/usr/lib/perl5/site_perl/usr/share/perl5/site_perl /usr/share/perl5/vendor_perl/Module/Runtime.pm line中的/ usr/lib/perl5/vendor_perl/usr/share/perl5/vendor_perl/usr/lib/perl5/core_perl/usr/share/perl5/core_perl。 205,第4行。at /home/rasmi/work/my_project/lib/TwitterModule.pm第6行「

我已經安裝Net :: Twitter和所有必要的utils並在兩臺機器上測試它。如果我使用Net :: Twitter沒有模塊,在一個腳本中,一切正常。存在/usr/share/perl5/vendor_perl/Net/Twitter/Role/Oauth.pm文件。

我對這種行爲感到非常驚訝,非常感謝您的幫助。

回答

4

它看起來像拼寫Net::Twitter::Role::OAuth - 註釋大寫'A'。你可能在區分大小寫的文件系統上。

更正您auth子程序線:

traits    => [qw/OAuth API::REST/], 

而且它可能會開始工作。

+0

+1漂亮的漁獲,喬希。 – TLP 2011-12-27 22:59:03

+0

因爲我拼寫MIME :: Base64'Mime :: Base64',所以昨天我在OS X(不區分大小寫)系統上用一行代碼燒了。 .pm正在加載,但'Mime ::'命名空間中當然沒有。所以很容易發現這個:) – 2011-12-27 23:05:00

+0

大寫很容易被誤解。 – TLP 2011-12-27 23:15:43