Cha*_*nez 0 perl module perl-module
我最近不得不从一个共享帐户转移到一个VPS,自从我进入VPS后,我无法获得一些我不会再写的Perl脚本了.
主脚本如下所示:
#!/usr/bin/perl
BEGIN{ push @INC, '../'; }
use CGI qw/:standard *div *form *script/;
use Vamp::Config qw/:site/;
use Vamp::Users;
use Vamp::Utils;
use Vamp::HTML;
use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)
根据我对Perl的有限知识,我可以说它正在尝试使用一些自定义Perl模块(配置,用户,实用程序和HTML).但是,这里有一些东西不允许使用它们.
文件夹结构如下所示:
这就是其中一个模块的编写方式:
package Vamp::Config;
BEGIN{ push @INC, '../' }
use Exporter;
use strict;
use warnings;
our @ISA = ("Exporter");
our @EXPORT_OK = qw/%DB $HOME_URL $ADMIN_URL $SITE_ROOT/;
our %EXPORT_TAGS = (
database => [qw/%DB/],
site => [qw/$HOME_URL $SITE_ROOT/],
admin => [qw/$ADMIN_URL/]
);
our %DB = (
LIVE => {
DATASOURCE => 'DBI:mysql:vamplets:localhost',
USERNAME => 'example',
PASSWORD => 'example'
},
DEV => {
DATASOURCE => 'DBI:mysql:Vamplets:localhost',
USERNAME => 'example',
PASSWORD => 'example'
},
DEV_ADMIN => {
DATASOURCE => 'DBI:mysql:VampletsAdmin:localhost',
USERNAME => 'example',
PASSWORD => 'example'
},
ADMIN => {
DATASOURCE => 'DBI:mysql:vampletsadmin:localhost',
USERNAME => 'example',
PASSWORD => 'example'
}
);
our $HOME_URL = 'http://www.vamplets.com';
#our $HOME_URL = 'http://localhost/vamplets';
#our $ADMIN_URL = 'http://localhost/vamplets/admin';
our $ADMIN_URL = 'http://www.vamplets.com/admin';
our $SITE_ROOT = "/home/content/13/5396413/html/";
#our $SITE_ROOT = "C:/xampp/htdocs/vamplets/";
Run Code Online (Sandbox Code Playgroud)
我尝试了很多不同的东西,我真的不知道该怎么做了.
我只是不断收到500内部服务器错误.
我知道Perl已安装并正常工作,因为我用它来检查:https://ip-50-63-189-142.ip.secureserver.net/cgi-bin/perldiver/perldiver.pl
先谢谢你!
包指令说
package Vamp::Config;
Run Code Online (Sandbox Code Playgroud)
所以你正确使用
use Vamp::Config;
Run Code Online (Sandbox Code Playgroud)
但这意味着必须命名文件
Vamp/Config.pm
Run Code Online (Sandbox Code Playgroud)
你说它的名字
Vamps/Config.pm
Run Code Online (Sandbox Code Playgroud)
对于初学者,
BEGIN { push @INC, '../'; }
Run Code Online (Sandbox Code Playgroud)
可以写得更清楚
use lib '..';
Run Code Online (Sandbox Code Playgroud)
它也更好,因为它将目录放在路径的前面,如果它们存在,它会添加相应的arch目录.
相对路径@INC被视为几乎在其他地方的相对路径:相对于当前工作目录.您希望查看相对于脚本所在目录的路径(而不是相对于当前工作目录的路径),因此您需要从该目录提供绝对路径构建.
更换
BEGIN { push @INC, '../'; } # Buggy
Run Code Online (Sandbox Code Playgroud)
同
use FindBin qw( $RealBin );
use lib "$RealBin/..";
Run Code Online (Sandbox Code Playgroud)
如果库dircetory更明确地命名../lib(例如lib/Vamp/Config.pm),那么你可以简单地使用
use mylib;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
117 次 |
| 最近记录: |