当我运行以下代码时:
use strict;
use warnings;
use IO::Socket::SSL;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new(ssl_opts => {
verify_hostname => 0,
});
my $res = $ua->get('https://internal.foo.bar.baz:20002');
print $res->as_string;
Run Code Online (Sandbox Code Playgroud)
我从 LWP 收到内部错误:
500 Can't connect to internal.foo.bar.baz:20002 (Bad file descriptor)
Content-Type: text/plain
Client-Date: Fri, 29 Jun 2018 21:23:13 GMT
Client-Warning: Internal response
Can't connect to internal.foo.bar.baz:20002 (Bad file descriptor)
Bad file descriptor at D:/strawberry/perl/site/lib/LWP/Protocol/http.pm line 50.
Run Code Online (Sandbox Code Playgroud)
网络流量显示这是一个“客户端问候”,随后服务器立即重置,并且协议是 TLSv1。服务器仅允许 TLS 1.2 连接,因此这是有道理的。
当我更改代码以指定客户端仅应使用 TLS 1.2 时,我得到了相同的响应。
my $ua = LWP::UserAgent->new(ssl_opts => {
verify_hostname …
Run Code Online (Sandbox Code Playgroud) 嗨,我想知道Perl是否有类似于Rstudio的东西?这是运行命令的能力,将所有变量保留在内存中而不退出脚本.
例如,假设我执行此命令my $temp = 83;
然后不是结束脚本而是更改值$temp = 22; print "$temp \n";
,依此类推,但我不会结束脚本并继续处理它.在处理大型数据集和一般工作流程时,这将非常有用.我遇到的最接近的是使用插件的Visual Studio Code,我可以在我的脚本中执行特定的代码块.但是我没有找到一种方法将变量持久保存在内存中.
谢谢!
我正在尝试修改此脚本:
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use Math::Vector::Real;
use constant DEG_PER_RAD => 45 / atan2(1, 1);
my ( $source, $out ) = qw/ OUT4 OUTABA12 /;
open my $in_fh, '<', $source or die qq{Unable to open "$source" for input: $!\n};
open my $out_fh, '>', $out or die qq{Unable to open "$out" for output: $!\n};
my @data;
push @data, V(split) while <$in_fh>;
my @aoa;
for my $i ( 0 .. $#data ) {
for my $j ( 0 .. …
Run Code Online (Sandbox Code Playgroud) 试图用方括号匹配一个字符串。
例如:
my $foo = "debug_bus[0]";
my $bar = "debug_bus[0][12:0] = some_value;";
if ($bar =~ $foo)
{
print "Match\n";
}
else
{
print "No Match\n";
}
Run Code Online (Sandbox Code Playgroud)
我会期望“匹配”,但是我不断收到“不匹配”,这使我相信“ [0]”中的括号可能会引起问题?
是否可以使用整数数组(索引)选择数组的特定元素?我知道这可以通过循环轻松完成,但我希望有一个单行解决方案.
例:
@arr = qw(a b c d e f);
@arr2 = qw( 0 2 4);
Run Code Online (Sandbox Code Playgroud)
而不是:
@arr3 = @arr[0,2,4];
@arr3 = @arr[@arr2]; #won't work as @arr2 returns number of elements
@arr3 = @arr[join(',', @arr2)] #won't work as join returns a string
Run Code Online (Sandbox Code Playgroud) 我在脚本中碰到这个代码来了,能否请您解释一下map
,并grep
在这里呢?
open FILE, '<', $file or die "Can't open file $file: $!\n";
my @sets = map {
chomp;
$_ =~ m/use (\w+)/;
$1;
}
grep /^use/, ( <FILE> );
close FILE;
Run Code Online (Sandbox Code Playgroud)
指向的文件$file
有:
use set_marvel;
use set_caprion;
and so on...
Run Code Online (Sandbox Code Playgroud)