我想在我没有root访问权限的共享服务器上安装perl模块.我怎样才能做到这一点?它们似乎也有旧版本的CPAN(它在运行命令时会抱怨),是否可以更新我帐户中使用的CPAN命令而无需root访问权限?
我正在使用托管的Linux机器,所以我没有权限写入/usr/lib目录.
当我尝试通过以下方式安装CPAN模块时:
perl Makefile.PL
make test
make install
Run Code Online (Sandbox Code Playgroud)
该模块被解压缩到一个blib/lib/文件夹.我保留了use
blib/lib/ModuleName但是编译器仍然无法找到模块.我已经尝试将.pm文件复制到本地目录并保留
require ModuleName但仍然给我一些错误.
如何将模块安装到其他目录并使用它?
我在Linux机器上,我没有root权限.我想通过CPAN将一些软件包安装到我的主目录中,这样当我运行Perl时,它就能看到它.
我跑了cpan,这要求一些配置选项.它要求提供一些目录,它建议~/perl"对于非root用户".尽管如此,当我尝试安装软件包时,它在make install步骤中失败了,因为我没有写入权限/usr/lib/perl5/whatever.
如何配置CPAN以便我可以将软件包安装到我的主目录中?
我想通过SSH连接到服务器并执行一个简单的命令,如"id",并获取它的输出并将其存储到我的主服务器上的文件中.我没有安装Net :: SSH的权限,这将使我的任务变得非常简单.请为我提供一个解决方案.我尝试使用反向标记,但我无法将输出存储在运行脚本的机器上.
每次我被迫从CPAN检索模块时,我都非常失望.在我工作的大多数环境中,互联网访问受到严格限制或完全被拒绝.在操作系统强化过程中已删除所有编译器.在进入或退出网站之前,安全团队会扫描所有数字存储媒体.请注意,我理解安全性,所有这些对我来说都没关系,但......
仅访问CPAN模块提供的代码的建议或最佳做法是什么.
如果我只需要一个模块给我的片段,功能或单一功能串,如何在不安装整个模块的情况下提取"我需要/想要的东西"?请记住,我可能会打印出来,写下来并输入内容,以便通过互联网访问从异地位置传输数据.
我有一个包含数字的二维数组.我试图计算出每个子阵列中的单个数字与每个其他子阵列中的一个相乘的乘积; 然后,我需要为所有可能的组合执行此操作.
目的是我输入一个单独事件频率的文件,并获得这些事件发生的特定系列概率的输出,每组中有一个事件.
我在前一个问题的帮助下将一些代码混合在一起:
for my $aref ( getCartesian(@freq) ) {
my $p = 1;
foreach my $n (@$aref) {
$p = $p * $n;
}
print "$p\n";
}
sub getCartesian {
my @input = @_;
my @ret = map [$_], @{ shift @input };
for my $a2 (@input) {
@ret = map {
my $v = $_;
map [@$v, $_], @$a2;
}
@ret;
}
return @ret;
}
Run Code Online (Sandbox Code Playgroud)
其中@freq是一个数组数组,例如:
@freq = [0.1, 0.2, 0.3,]
[0.4, 0.5, 0.6,]
[0.7, …Run Code Online (Sandbox Code Playgroud) 我正在使用向量空间模型构建基本搜索引擎,这是用于返回500个URL并从内容中删除SGML标记的爬虫.但是,它非常慢(仅检索URL需要超过30分钟).我该如何优化代码?我已插入wikipedia.org作为示例起始URL.
use warnings;
use LWP::Simple;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;
use HTML::LinkExtor;
my $starting_url = 'http://en.wikipedia.org/wiki/Main_Page';
my @urls = $starting_url;
my %alreadyvisited;
my $browser = LWP::UserAgent->new();
$browser->timeout(5);
my $url_count = 0;
while (@urls)
{
my $url = shift @urls;
next if $alreadyvisited{$url}; ## check if already visited
my $request = HTTP::Request->new(GET => $url);
my $response = $browser->request($request);
if ($response->is_error())
{
print $response->status_line, "\n"; ## check for bad URL
}
my $contents = $response->content(); ## get contents from URL
push …Run Code Online (Sandbox Code Playgroud) 因此,我将通过说这是我使用RegExr提出来的,并只是随机输入内容,直到得到所需的内容为止。
我想到的目标是使用json字符串生成数组。
my @valuesArray=$msgPayload=~/((?=["]).+?(?=["])")/g;
Run Code Online (Sandbox Code Playgroud)
这在大多数情况下都有效,但是它只是从一个引号到下一个引号中选择值。当存在诸如true,false或null之类的值时,这将成为一个问题。
示例字符串
..."email":"","lastLogon":null,"pwdChanged":"0","status":"A","phoneNumber":"","extension":"","locale":"en_US","boChecked":false,"boUserId":"","UserId":"TWEH","sChecked":false,...
Run Code Online (Sandbox Code Playgroud)
因此,在实际拆分成数组之前,我通过使用多个替换来解决此问题。
$msgPayload =~ s/:true/:"true"/g;
$msgPayload =~ s/:false/:"false"/g;
$msgPayload =~ s/:null/:"null"/g;
my @valuesArray=$msgPayload=~/((?=["]).+?(?=["])")/g;
Run Code Online (Sandbox Code Playgroud)
现在,我想知道是否有一种方法可以将所有这些组合到一个正则表达式中,在该表达式中还可以选择真正的false和null值而无需先执行替换操作。而且,如果有可能,我觉得这样做会更有效率,但是如果我做错了,我想知道更多。
谢谢!
编辑: 我们没有安装任何模块,并且我怀疑我能为这个项目安装任何模块,因为它是如此之小。我只是想尽我所能。
数据存储在表的varchar列中。这样将收到一个完整的示例。
[ { "signonId" : "", "userId" : "USERNAME", "groupID" : "Master", "userName" : "", "phoneNumber" : "", "extension" : "4444", "emailAddress" : "", "password" : "", "locale" : ""}, { "signonId" : "", "userId" : "USERNAME", "groupID" : "Master", "userName" : "", "phoneNumber" : "", "extension" : "5555", "emailAddress" : "", "password" : "", …Run Code Online (Sandbox Code Playgroud) 我有一条线:
$string = 'Paul,12,"soccer,baseball,hockey",white';
Run Code Online (Sandbox Code Playgroud)
我试着将其拆分为具有4个值的@array
print $array[2];
Run Code Online (Sandbox Code Playgroud)
给
soccer,baseball,hockey
我怎么这样?救命!
perl ×9
cpan ×4
install ×2
regex ×2
arrays ×1
combinations ×1
csv ×1
module ×1
optimization ×1
performance ×1
perl-module ×1
ssh ×1
web-crawler ×1