我有一个使用PostgreSQL用Perl编写的Web应用程序.
访问PostgreSQL数据库时,我需要提供用户名和密码.为了使密码可用于系统的无人值守启动,我需要将密码嵌入我的应用程序或配置文件中,或者作为Apache中配置的环境变量.
无论哪种情况,我都必须在某处以明文格式提供密码.
它是如何在真实的网站上完成的?
我尝试下载,解压缩,按照说明操作:
tar -zxf Perl-Critic-1.107_001.tar.gz
cd Perl-Critic-1.107_001
perl Makefile.PL
make
make test
make install
Run Code Online (Sandbox Code Playgroud)
当我进入制作步骤时,我得到:
/usr/bin/perl "-Iblib/arch" "-Iblib/lib" t/Variables/RequireLocalizedPunctuationVars.run.PL t/Variables/RequireLocalizedPunctuationVars.run
Can't locate B/Keywords.pm in @INC (@INC contains: blib/arch blib/lib /Library/Perl/5.12/darwin-thread-multi-2level /Library/Perl/5.12 /Network/Library/Perl/5.12/darwin-thread-multi-2level /Network/Library/Perl/5.12 /Library/Perl/Updates/5.12.3 /System/Library/Perl/5.12/darwin-thread-multi-2level /System/Library/Perl/5.12 /System/Library/Perl/Extras/5.12/darwin-thread-multi-2level /System/Library/Perl/Extras/5.12 .) at t/Variables/RequireLocalizedPunctuationVars.run.PL line 16.
BEGIN failed--compilation aborted at t/Variables/RequireLocalizedPunctuationVars.run.PL line 16.
make: *** [t/Variables/RequireLocalizedPunctuationVars.run] Error 2
Run Code Online (Sandbox Code Playgroud)
我怀疑它是因为我错过了依赖.我也发现了这个任务 - https://metacpan.org/pod/Task::Perl::Critic这看起来很有趣,但它没有关于如何运行的指示.
---编辑运行后 - sudo cpan Task :: Perl :: Critic
我得到这些结果:
Test Summary Report
-------------------
t/20_policies.t (Wstat: 512 Tests: 0 Failed: 0)
Non-zero …Run Code Online (Sandbox Code Playgroud) 我想计算perl中每行数字的方差.我写过这个子程序:
################################################################
# variance
#
#
# A subroutine to compute the variance of an array
# division by n-1 i s used
#
sub var{
my ($data) = @_;
if (@$data ==1) {
return 0;
}
my $mean = mean ($data);
my $sqtotal = 0;
foreach (@$data) {
$sqtotal += ($_ - $mean) ** 2
}
my $var = $sqtotal / (scalar @$data - 1);
return $var;
}
Run Code Online (Sandbox Code Playgroud)
如果我给它这个数组有58个相同数字的元素
[0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98 ,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98 ,0.98,0.98,0.98,0.98,0.98,0.98,0.98,0.98]
计算给了我1.25421964097639e-30.
我还尝试使用Statistics :: Descriptive模块(http://metacpan.org/pod/Statistics::Descriptive),它给了我2.11916254524942e-15.
我也试过这个网站( …
我正在尝试修改现有的perl脚本以支持地理编码.找到了这个模块:http://metacpan.org/pod/Geo :: Coder :: Google
我只是无法弄清楚如何从它返回的哈希结构中提取数据(我不是一个perl编码器,这只是我必须解决的一些遗留脚本).
{
'AddressDetails' => {
'Country' => {
'AdministrativeArea' => {
'SubAdministrativeArea' => {
'SubAdministrativeAreaName' => 'San Francisco',
'Locality' => {
'PostalCode' => {
'PostalCodeNumber' => '94107'
},
'LocalityName' => 'San Francisco',
'Thoroughfare' => {
'ThoroughfareName' => '548 4th St'
}
}
},
'AdministrativeAreaName' => 'CA'
},
'CountryNameCode' => 'US'
}
},
'address' => '548 4th St, San Francisco, CA 94107, USA',
'Point' => {
'coordinates' => [
'-122.397323',
'37.778993',
0
] …Run Code Online (Sandbox Code Playgroud) 有没有办法在linux中创建自定义信号.就像让我们说"回声疯狂"在文件中执行一样?无论何时执行该信号,我都会使用该信号停止该过程......此外,我还想使用带有新信号的perl Enbugger.有没有办法做到这一点?我从http://metacpan.org/pod/Enbugger找到了这个
use Enbugger::OnError qw( USR1 USR2 INT HUP );
Run Code Online (Sandbox Code Playgroud)
其中USR1和USR2是用户定义的信号.
我有一个docker-compose.override.yml启动 10 个不同服务的文件,这些服务仅在容器名称和它们运行的命令上有所不同。他们还需要各种环境变量、多个卷等。
该文件看起来像这样,但它有 10 个部分,每个部分实际上有更多的配置。
我不喜欢所有的重复。
有没有办法将所有公共配置部分移到其他地方并让所有服务都使用这些信息?
也许还有其他解决方案?
version: "3"
services:
service-1:
image: my-image
tty: true
environment:
- APP_ENVIRONMENT=dev
working_dir: /source
volumes:
- .:/source:ro
command: run_services_1
service-2:
image: my-image
tty: true
environment:
- APP_ENVIRONMENT=dev
working_dir: /source
volumes:
- .:/source:ro
command: run_services_2
Run Code Online (Sandbox Code Playgroud) use warnings;
use Test::More;
use File::Find::Rule;
use Test::File::Find::Rule;
my $rule = File::Find::Rule->file->name('*.pl')->not_grep(qr/^\s*use\s+strict;/m, sub { 1 });
match_rule_no_result($rule, ".", 'use strict usage');
done_testing();
Run Code Online (Sandbox Code Playgroud)
输出是:
out put :
ok 1 - use strict usage
1..1
Run Code Online (Sandbox Code Playgroud)
它总是通过测试,即使我的脚本不使用strict,就像这个位于"."内的脚本一样.目录.在http://metacpan.org/pod/Test::File::Find::Rule中可以使用相同的代码作为示例
任何线索?
F.
我正在构建一个与Web服务器通信的Android应用程序,并且正在努力应对以下场景:
给定String中的一行XML,例如:
"<test one="1" two="2" />"
Run Code Online (Sandbox Code Playgroud)
我想将值提取到HashMap中,以便:
map.get("one") = "1"
map.get("two") = "2"
Run Code Online (Sandbox Code Playgroud)
我已经可以使用SAX Parser完成一个完整的XML文档了,当我尝试用MalformedUrlException给它上面的字符串时会抱怨:找不到协议
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
Document doc = null;
builder = factory.newDocumentBuilder();
doc = builder.parse("<test one="1" two="2" />"); //here
Run Code Online (Sandbox Code Playgroud)
我意识到一些正则表达式可以做到这一点,但我真的很喜欢这样做.
可以在http://metacpan.org/pod/XML::Simple#XMLin中找到相同的行为,这是Web服务器使用的内容.
有人可以帮忙吗?感谢:D
我想从Java有效地执行Perl代码.Perl的目的主要是执行正则表达式匹配(在某些测试中,Perl比Java更有效)
到目前为止,我已经发现了使用它的可能性:http://metacpan.org/pod/Inline :: Java :: PerlInterpreter
另一种选择是在java中使用Runtime.exec()来调用Perl.
什么是最高效的解决方案?一个人比另一个人有优势吗?我真的不能看到任何,除了PerlInterpreter仍处于试验阶段,我不知道这是否将改变.你知道从Java调用Perl的其他选项吗?
我有以下工作代码:
import datetime
d = "2012-12-19"
f = map(int, d.split('-') )
day = datetime.date( f[0], f[1], f[2] )
print day
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这样写时:
day = datetime.date( f )
Run Code Online (Sandbox Code Playgroud)
我得到一个异常:TypeError:需要一个整数
为什么这样,我怎么能写得更好?
我有这么大的问题,我已经考虑了2天了.我写了一个关于捕获未注册(访客)用户的小类,他们可以通过URL尝试SQL注入攻击,经过2次实验,他们的IP在我的数据库中被阻止(所以在数组中我存储了一些标志),
$blockSigns = array ("'", "/", "\", ":", "//", "and so on");
Run Code Online (Sandbox Code Playgroud)
但:
if(isset($ _ SESSION ["user"])){$ user = $ _SESSION ["user"]; } else {$ user ="unknown"; }
我读到perl有一些名为NET :: MAC的API,
我决定通过perl查找用户mac地址并将其集成到PHP中.可能吗?如果是,请怎么样?我不明白.如果不:
我该如何解决这个问题?如果他/她没有注册,我如何识别用户?有机会吗?如果您已经遇到过这类问题,请分享您的经验.提前致谢...
我编写了一个Perl脚本,它将检查URL列表并通过发送GET请求连接到它们.
现在,让我们说其中一个URL有一个非常大的文件,例如,大小> 100 MB.
发送请求时使用以下命令下载此文件:
$mech=WWW::Mechanize->new();
$url="http://somewebsitename.com/very_big_file.txt"
$mech->get($url)
Run Code Online (Sandbox Code Playgroud)
发送GET请求后,它将开始下载文件.我希望使用WWW :: Mechanize取消它.我怎样才能做到这一点?
我在这里检查了这个Perl模块的文档:
http://metacpan.org/pod/WWW::Mechanize
但是,我找不到可以帮助我做到这一点的方法.
谢谢.