我的主机 (iPage) 没有安装 JSON.pm。我不想使用他们已安装的模块 (XML) 将数据从 CGI 脚本传输回网页。无论如何我可以使用 JSON 而无需他们在 Perl 上安装它?
我问的原因是因为我注意到当我下载 JSON zip 时,我必须运行 makefile json.pm 命令,但我无法访问 Unix shell 或 SSH 终端。
我的主机 (iPage) 没有安装 JSON.pm。我不想使用他们已安装的模块 (XML) 将数据从 CGI 脚本传输回网页。无论如何我可以使用 JSON 而无需他们在 Perl 上安装它?
我问的原因是因为我注意到当我下载 JSON zip 时,我必须运行 makefile json.pm 命令,但我无法访问 Unix shell 或 SSH 终端。
如果您的 Perl 足够新,5.14 及更高版本,它将附带JSON::PP,这是 JSON 解析器的纯 Perl 实现。令人困惑的是,它没有随 JSON.pm 一起提供。所以试着use JSON::PP
看看它是否有效。
否则,请遵循 Ilmari 的指示。如果您切换到具有 shell 访问权限的主机,则可以使用local::lib来管理 CPAN 模块。
您应该能够安装JSON 模块的纯 Perl 版本的本地副本,而无需访问 shell。只需将.tar.gz
存档下载到您自己的计算机上,解压缩并将lib
子目录下的所有内容复制到您的虚拟主机上的合适位置即可。
您还需要告诉 Perl 在哪里可以找到模块,为此您需要知道将模块复制到的文件系统路径。例如,如果您将lib
目录的内容复制到/home/username/perl-lib
您的虚拟主机上,那么您将在代码中包含以下行:
use lib '/home/username/perl-lib';
use JSON;
根据您的虚拟主机的配置方式,您可能还可以使用$ENV{HOME}
获取主目录的路径,以便您可以编写:
use lib "$ENV{HOME}/perl-lib";
use JSON;
或者您可以尝试使用FindBin 模块查找包含您的脚本的目录的路径,并从那里找到该lib
目录(请参阅 FindBin 文档中的示例)。