好的,这是主文件使用那些包含pm文件的方式
use Dancer;
use Net::OAuth2::Client;
use HTTP::Request::Common;
sub client {
Net::OAuth2::Client->new(
'0', # OAuth 2.0 client_id
'1234567890abcdef', # OAuth 2.0 client_secret
site => 'http://www.deviantart.com',
authorize_path => 'https://www.deviantart.com/oauth2/draft15/authorize?response_type=code',
access_token_path => 'https://www.deviantart.com/oauth2/draft15/token?grant_type=authorization_code',
access_token_method => 'GET',
)->web_server(
redirect_uri => uri_for('/auth/deviantart/callback')
);
}
我已将这些PM文件放在与此目录相同的目录中,但由于找不到
而失败
这些文件就像这样开始
package Net::OAuth2::Client;
package HTTP::Request::Common;
package Dancer;
答案 0 :(得分:7)
Perl希望在Foo::Bar::Baz
$PERL5LIB/Foo/Bar/Baz.pm
它还希望模块具有依赖性。不要只复制特定的.pm
文件。使用cpanm
(或cpan
或其他CPAN安装程序)正确安装模块。
您似乎正在使用Windows ...
如果您使用的是ActiveState Perl,那么您可能应该查看其PPM安装程序。
如果你使用的是Strawberry Perl,那么它将有一个cpan安装程序,你可以运行:
cpan Net::OAuth2::Client
在命令行上。
答案 1 :(得分:5)
有一个名为@INC
的Perl变量,它列出了搜索这些Perl模块的目录。运行这一个班轮:
$ perl -e 'print join ("\n", @INC) . "\n";'
输出将是可以找到这些Perl模块的所有目录的列表。
现在,您必须了解这些模块的结构。当一个模块说:
use Foo::Bar:Barfu;
这意味着有一个名为Foo/Bar/Barfu.pm
的文件位于其中一个目录中。这就是Perl知道如何找到这些模块的方式。当然,如果这些模块包含必须编译并与模块链接的二进制代码,那么所有赌注都将被取消。
这些似乎都是CPAN模块。如果您使用的是Strawberry Perl,则可以使用Console窗口中的cpan
命令来安装这些模块。只需在命令行上键入cpan
,然后按照说明操作即可。您需要在第一次执行此操作,因此cpan
可以自行配置。
一旦完成,你可以在下次做这样的事情:
$ cpan install Dancer
这将(幸运的话)为您安装Dancer模块。这也将运行所有测试,并根据需要进行任何类型的C编译。
如果您正在使用ActiveState Perl,请尝试使用Perl模块管理器(PMM),它应位于ActiveState下的“开始”菜单中。您也可以通过cpan
使用ActiveState,但是您需要执行bit of configuring才能使其正常运行。
答案 2 :(得分:0)
如果您不必从cpan安装它们,您应该按照以下步骤操作:
假设文件中没有任何依赖关系。在这种情况下,您已使用以下规则重命名这些文件:“.pm文件的名称必须与包名称相同;进入该文件。 有两种方法:主文件中的第一种方法应该像这样写:
使用Dancer; #module的名称必须与文件名相同使用客户; #...
使用普通; #common not Common
第二种方法是:为每个.pm文件制作一些目录。例如,如果您的模块名称为package Net::OAuth2::Client;
,那么您必须将某些目录设为./Net/OAuth2/Client.pm
。对于将在其中找到模块的目录路径,符号::
与/
相同。
P.S。当然,如果您使用正确的名称,则会找到./
目录中的任何.pm模块文件。