Tag: perl

你如何将这个正则expression式成语从Perl翻译成Python?

大约一年前我从Perl切换到Python,并没有回头。 只有一个成语,我发现我可以在Perl比Python更容易做到: if ($var =~ /foo(.+)/) { # do something with $1 } elsif ($var =~ /bar(.+)/) { # do something with $1 } elsif ($var =~ /baz(.+)/) { # do something with $1 } 相应的Python代码不是很优雅,因为if语句不断变得嵌套: m = re.search(r'foo(.+)', var) if m: # do something with m.group(1) else: m = re.search(r'bar(.+)', var) if m: # […]

如何在使用之前检查是否有Perl模块?

我有以下Perl代码依赖于Term::ReadKey来获取terminal宽度; 我的NetBSD版本缺less这个模块,所以我想在模块丢失的时候将默认的terminal宽度设置为80。 我不知道如何有条件地使用一个模块,提前知道它是否可用。 我目前的实现只是退出一个消息,说它不能findTerm::ReadKey如果它不存在。 #/usr/pkg/bin/perl -w # Try loading Term::ReadKey use Term::ReadKey; my ($wchar, $hchar, $wpixels, $hpixels) = GetTerminalSize(); my @p=(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97); my $plen=$#p+1; printf("num |".("%".int(($wchar-5)/$plen)."d") x $plen."\n",@p); 我在NetBSD上使用Perl 5.8.7,在CygWin上使用5.8.8你能帮我更有效地实现这个脚本吗?

如何用正则expression式删除括号内的文本?

我试图处理一堆文件,我需要改变,然后删除文件名中的无关信息; 值得注意的是,我试图删除括号内的文字。 例如: filename = "Example_file_(extra_descriptor).ext" 我想要将一大堆文件的括号expression式可能在中间或末尾,并且可变长度。 什么样的正则expression式? Perl或Python语法将是首选。

在Perl中分配三元条件运算符的问题

我的程序中的这段Perl代码给出了错误的结果。 $condition ? $a = 2 : $a = 3 ; print $a; 不pipe$condition的值是多less,输出总是3,怎么回事?

转换为和来自印度教日历

如何将unix时间转换为印度日历维基百科时间,以及在php , Perl或Python或Java的其他方式? 我知道我可以皈依Hebrew和Jewish 。 但Hindu不是一个select。 更具体地说,我正在谈论印度教的阴历。 以下网站正在工作,而且正是我想要的: http : //web.meson.org/calendars/ 。 例如,它把5-11-2068 (公历)翻译成5-11-2068 (后文)。 我怎样才能完成同样的任务? 如果那里绝对没有问题,我怎么能自己写呢?

我怎样才能让LWPvalidationSSL服务器证书?

我怎样才能让LWPvalidation我所连接的服务器的证书是由受信任的机构签署的,并发布给正确的主机? 据我所知,它甚至不检查证书声称是为我连接到的主机名称。 这似乎是一个主要的安全漏洞(特别是最近的DNS漏洞)。 更新:原来我真正想要的是HTTPS_CA_DIR ,因为我没有一个ca-bundle.crt。 但是HTTPS_CA_DIR=/usr/share/ca-certificates/有窍门。 我无论如何都认为答案是可以接受的,因为它已经足够接近了。 更新2:事实certificate, HTTPS_CA_DIR和HTTPS_CA_FILE只适用于如果您使用Net :: SSL作为基础的SSL库。 但是LWP也可以和IO :: Socket :: SSL一起工作,它将忽略这些环境variables,并且很乐意与任何服务器通信,不pipe它提供了什么证书。 有更通用的解决scheme吗? 更新3:不幸的是,解决scheme仍然不完整。 Net :: SSL和IO :: Socket :: SSL都没有根据证书检查主机名。 这意味着某人可以获得某个域名的合法证书,然后冒充任何其他域名而无需LWP抱怨。 更新4: LWP 6.00终于解决了这个问题。 查看我的答案了解详情。

Perl:虽然没有条件

根据文档 ,只要expression式为真 , while语句就会执行该块。 我想知道为什么它变成一个空expression式的无限循环: while () { # infinite loop … } 这只是文档中的不准确吗?

Perl中的正则expression式组:如何从正则expression式组中捕获元素,匹配来自string的未知数/多个/variables出现的元素?

在Perl中,如何使用一个正则expression式分组来捕获多个匹配它的事件,并将它们分成几个数组元素? 例如,对于一个string: var1=100 var2=90 var5=hello var3="a, b, c" var7=test var3=hello 用代码处理: $string = "var1=100 var2=90 var5=hello var3=\"a, b, c\" var7=test var3=hello"; my @array = $string =~ <regular expression here> for ( my $i = 0; $i < scalar( @array ); $i++ ) { print $i.": ".$array[$i]."\n"; } 我希望看到作为输出: 0: var1=100 1: var2=90 2: var5=hello 3: […]

多行search取代Perl

我知道这种问题以前已经被问过很多次了。 我之所以再来这里是因为我觉得我错过了一些简单而基本的东西。 是否有可能使这种searchreplace程序更好。 例如没有打开同一个文件两次。 也欢迎速度相关的build议。 请注意,这适用于多行匹配,也可以replace多行string。 #!/bin/perl -w -0777 local $/ = undef; open INFILE, $full_file_path or die "Could not open file. $!"; $string = <INFILE>; close INFILE; $string =~ s/START.*STOP/$replace_string/sm; open OUTFILE, ">", $full_file_path or die "Could not open file. $!"; print OUTFILE ($string); close OUTFILE;

父母和基地在Perl 5有什么区别?

似乎有一个名为parent的新的编译指南,做base大致相同的事情。 parent做了什么来保证一个新的(非核心)模块? 我错过了什么?