我试图让 WWW::Mechanize 使用 https 登录到 Yahoo;但是,它需要使用 Crypt::SSLeay 来通过 https 发送。
Crypt::SSLeay 安装成功,并且系统上已经安装了 openssl。
但是,它在加载时给出错误:
Can't load '/home/gen19/perl5/lib/perl5/lib/site_perl/5.10.1/i686-linux//auto/Crypt/SSLeay/SSLeay.so' for module Crypt::SSLeay: /home/gen19/perl5/lib/perl5/lib/site_perl/5.10.1/i686-linux//auto/Crypt/SSLeay/SSLeay.so: undefined symbol: PL_sv_undef at /usr/lib/perl5/5.8.0/i386-linux-thread-multi/DynaLoader.pm line 229.
at /home/gen19/lwp4 line 15
Compilation failed in require at /home/gen19/lwp4 line 15.
BEGIN failed--compilation aborted at /home/gen19/lwp4 line 15.
Crypt::SSLeay安装成功,可以识别openssl的安装(这里):
perl Makefile.PL
=======================================================
Only one OpenSSL installation found at /usr
Consider running 'perl Makefile.PL --default' the next
time Crypt::SSLeay is upgraded to select this directory
automatically thereby avoiding the following prompt.
======================================================= …Run Code Online (Sandbox Code Playgroud) 我曾多次尝试(未成功)手动安装 CPAN 中找到的 Perl 模块 (Win32-Printer-0.9.1),但未包含在 PPM 存储库中。据我所知,该模块必须下载并解压。我知道您必须运行包含的 MakeFile.pl。
我知道 nmake 以某种方式参与其中,但尽管尝试遵循网上找到的说明,但我一直无法让它工作。
我在 Windows 上使用 ActivePerl 5.12.2。
我真的不明白为什么会这么复杂!
这更多的是一个公开的讨论和结论,而不是一个真正的问题,希望它能在某个时候帮助别人。
我正在寻找如何在与互联网断开连接的服务器上制作 Perl 模块(否则答案很简单:使用cpan),所以我唯一的选择是直接在服务器上手动编译从互联网(CPAN 或其他)下载的模块。
问题是,在标准 Windows 服务器上,没有编译器。那么如何制作模块呢?
我有以下问题:
如何使用 Text::CSV_XS 模块将列添加到 CSV 文件?
模块中的打印例程仅将数组写入一行。如果我有一个数组,如何将其作为列写入文件?我已经写了下面的代码
open my $outFH, ">", $outFile or die "$outFile: $!";
$outFilecsv = Text::CSV_XS->new ({ binary => 1, eol => $/ });
@column = read_column($inFile, $i);
$outFilecsv->print($outFH, \@column)or $outFilecsv->error_diag;
Run Code Online (Sandbox Code Playgroud)
其中 read_column 方法读取返回另一个 csv 文件中的指定列。
我正在以下代码中尝试 Perl 的 PDL:
#!/usr/bin/perl -w
use strict;
use PDL::Core qw(pdl);
use PDL::Math qw(isfinite);
use PDL::Primitive qw(statsover);
my $div = 4;
my @array1 = (0..10);
my $pdl_array = log(pdl(@array1)/$div);
$pdl_array->where(!isfinite($pdl_array)) .= 0;
my($mean,$stdev) = statsover($pdl_array);
die $pdl_array,"\n",$mean," ",$stdev,"\n";
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
未定义的子例程 &PDL::divide 在 ./compare_const.pl 第 10 行调用。
有什么提示吗?非常感谢。
我正在使用 perl 模块 Excel::Writer::XLSX。以下代码片段在结果文件中创建标题行。
use strict;
use warnings;
use Excel::Writer::XLSX;
my $workbook = Excel::Writer::XLSX->new("myExcel.xlsx");
my $worksheet = $workbook->add_worksheet("Sheet1");
my $ccnt = 0;
foreach my $entry (('Head1','Head2','Head3')) {
$worksheet->write(0,$ccnt++,$entry);
}
$workbook->close();
Run Code Online (Sandbox Code Playgroud)
现在,我想修复第一行,使其在向下滚动时保持可见。尽管 CPAN 上有很多很好的文档,但我没有找到如何管理它。
有一些 Perl 模块以前可以通过以下方式安装: yum install "perl(DateTime)" 在 CentOS7 下。在 CentOS8 中,我收到错误消息:
No match for argument: perl(DateTime)
Run Code Online (Sandbox Code Playgroud)
我对 perl(Template)、perl(YAML::XS)、perl(Crypt::Eksblowfish::Bcrypt) 和 perl(JSON::XS) 有同样的问题
我尝试搜索:
yum provides *DateTime*
Run Code Online (Sandbox Code Playgroud)
但我在那里也找不到任何东西。
我制作了一个Perl模块,MyModule.pm其中包含一些getText我想在shell脚本中调用的子例程。我尝试了以下方式,但它给出了错误;
SEC_DIR=`perl -MMyModule -e 'getText'`; # line 1
echo $SEC_DIR
exit 0
Run Code Online (Sandbox Code Playgroud)
返回错误;
Can't locate MyModule.pm in @INC (@INC contains: /usr/lib/perl5/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/5.10.0 /usr/lib/perl5/site_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/site_perl/5.10.0 /usr/lib/perl5/vendor_perl/5.10.0/x86_64-linux-thread-multi /usr/lib/perl5/vendor_perl/5.10.0 /usr/lib/perl5/vendor_perl .).
Run Code Online (Sandbox Code Playgroud)
BEGIN失败-编译中止。
PS:.pm文件和.sh在同一位置。我尝试过的其他选择;
SEC_DIR=`perl -MMyModule -e '&getText'`;
SEC_DIR=`perl -MMyModule -e 'use MyModule; getText'`;
SEC_DIR=`perl -e 'use MyModule; getText'`;
Run Code Online (Sandbox Code Playgroud) 在使用FRONTIER :: CLIENT模块在Perl中编写客户端API.我试图在Perl中执行类似下面的操作:
HashMap<Integer, String> message = (HashMap<Integer, String>)client.execute("APIWrapper.login");
System.out.println(message.get(1000));
Run Code Online (Sandbox Code Playgroud)
如何在Perl中实现相同的想法?