我需要在远程服务器上测试perl脚本.我试过运行它,但我得到了错误
Can't locate Date/Manip.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .
Run Code Online (Sandbox Code Playgroud)
所以我下载了DateManip.pm文件,并尝试将其复制到上述位置之一.但我没有权限在任何这些地方复制文件.有没有办法在我自己的目录中有这个*.pm文件并从那里调用它或者我是否必须将它放在其中一个位置?
我有64位Vista中的ActiveState Perl的"v5.10.0为MSWin32-64的多线程构建",我试图让地穴:: SSLeay的用的版本一起安装的软件包libeay32.dll和ssleay32.dll.
我之前在使用'uwinnipeg'服务器的Win32机器上完成了这个,但是我遇到了64位系统的问题.
ppm install http://theoryx5.uwinnipeg.ca/ppms/Crypt-SSLeay.ppd ppm install failed: The PPD does not provide code to install for this platform
我尝试了直接ppm安装,似乎工作,但验证失败,我没有看到任何dll文件的迹象?
C:\Perl64\bin>ppm install Crypt::SSLeay Downloading ActiveState Package Repository packlist...done Updating ActiveState Package Repository database...done Syncing site PPM database with .packlists...done No missing packages to install C:\Perl64\bin>ppm verify Crypt::SSLeay ppm verify failed: Package 'Crypt::SSLeay' is not installed
有谁知道我在哪里/如何获得与我的PC兼容的版本?
我需要一个Perl脚本,它将数字作为输入示例222,它应该输出为二百二十二.
我有一个二进制文件,并获得我使用"解包"功能的内容.
我的脚本可以运行32位exe或64位exe.因此我使用了以下代码:
if ( $ENV{PROCESSOR_ARCHITECTURE} eq 'x86' )
{
@data = unpack( "LL8", $binary );
}
else
{
@data = unpack( "Q8", $binary );
}
print Dumper \@data;
Run Code Online (Sandbox Code Playgroud)
但是当我使用32位Active Perl和64位Active perl编译器执行相同操作时,我得到的结果不同:
32位:
$ VAR1 = [129864071,0,47193587,0,16448777,0,41067198,0,129];
64位:
$ VAR1 = [129864071,47193587,16448777,41067198,129,365173507,25208052,152155982]
造成这种差异的原因是什么?如何在仍然使用32位无符号长和64位无符号四元组值的同时使它们相似?
我在安装SOAP :: Lite时遇到问题
我在CentOS 5.9上使用perl,v5.8.8
我收到一个错误:
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/SOAP/Transport/HTTP/CGI.t 2 512 2 2 100.00% 1-2
6 tests and 25 subtests skipped.
Failed 1/33 test scripts, 96.97% okay. 2/854 subtests failed, 99.77% okay.
make: *** [test_dynamic] Error 255
/usr/bin/make test -- NOT OK
Running make install
make test had returned bad status, won't install without force
Run Code Online (Sandbox Code Playgroud)
如何修复以便它可以安装SOAP :: Lite?
全输出:
cp lib/SOAP/Lite.pm blib/lib/SOAP/Lite.pm
cp lib/SOAP/Fault.pod blib/lib/SOAP/Fault.pod
cp bin/SOAPsh.pl blib/script/SOAPsh.pl
/usr/bin/perl -MExtUtils::MY -e …Run Code Online (Sandbox Code Playgroud) 我想知道IO :: Socket :: SSL模块的位置,或者更具体地说,知道SSL.pm文件所在的位置.我已经知道我已经安装了IO :: Socket :: SSL因为use IO::Socket::SSL有效.
是否有任何Perl模块具有与Docopt类似的功能,或者是否有为其开发的端口?
Docopt是一个模块,它通过解析使用和选项消息为命令行调用创建接口.
您可以创建标准帮助消息
Naval Fate.
Usage:
naval_fate ship new ...
naval_fate ship move [--speed=]
naval_fate ship shoot
naval_fate mine (set|remove) [--moored|--drifting]
naval_fate -h | --help
naval_fate --version
Options:
-h --help Show this screen.
--version Show version.
--speed= Speed in knots [default: 10].
--moored Moored (anchored) mine.
--drifting Drifting mine.
然后为您创建选项处理程序,而不是使用Getopt :: Long再次编写它们,并且还处理命令解析(我使用App :: Cmd).
似乎它始于Python,现在以许多其他语言实现.
虽然我没有看到任何具有相同名称但具有不同情况的模块,但仅仅是为了好奇,我试图安装Log :: Log4perl并且在安装期间我拼错它'Perl'代替'perl':
% cpan -i Log::Log4Perl
Cannot install Log::Log4Perl, don't know what it is.
Run Code Online (Sandbox Code Playgroud)
当我使用正确的名字时,情况进展顺利:
% cpan -i Log::Log4perl
Run Code Online (Sandbox Code Playgroud)
相同的名称但不同的情况可能会产生冲突 这背后有什么具体原因吗?
尝试使用此命令安装perl的Encode :: Detect模块时出现以下错误
perl -MCPAN -e "install Encode::Detect"
Run Code Online (Sandbox Code Playgroud)
错误信息
cc: error trying to exec 'cc1plus': execvp: No such file or directory
Run Code Online (Sandbox Code Playgroud) 通常,当我建立在Perl的数据结构,我最终不得不从声明它%leaf来%root,所以我一直有一个模块,让我从建立修修补补
$seed来$seed->trunk->branch->leaf.
使用AUTOLOAD和new子程序并不困难.我对SO的问题是如何检测是否正在使用'strict'编译指示,以便模块以不同的模式运行,这需要在使用之前"声明"变量,因此我不会意外地为$seed->drunk当我使用strict时 - 假设模块被调用branch,这是模块使用的有效语法
$seed->declare('trunk');
$seed->trunk(new branch);
$seed->trunk->declare('leaf');
$seed->trunk->leaf("value");
Run Code Online (Sandbox Code Playgroud)
如何从模块中检测调用程序中的严格编译指示是否有效?
可能这是不可能的 - 在这种情况下,我必须使用静态变量来处理与模块无关的编译指示.
EDITED/POSTSCRIPT:
我编写了初始版本,没有检查'严格'或实现'declare'子程序,并意识到自动加载器不提供足够简单的用户语法,如果它通过引用操作,所以我写它来检查第一个参数并分配传递给对象引用的哈希表中的元素的值,否则如果没有参数,则返回指定元素的值.
所以我发布了分支模块的代码以满足您的好奇心.请注意,我还没有实施严格检查.
package branch;
sub new
{
my $type = shift;
my $self = { };
bless $self, $type;
return $self;
}
sub DESTROY
{
my $self = shift;
%$self = undef;
}
sub AUTOLOAD
{
my $self = shift;
my $value = shift;
my $sub …Run Code Online (Sandbox Code Playgroud)