当我system()在Perl中调用时,我通常会根据perldoc来检查返回码.嗯,我是这么认为的.大多数时间$rc!=0对我来说已经足够了.最近我帮助了两个人system()在apache下运行他们的.cgi脚本时遇到问题.我指示他们检查$rc的
my $rc = system(...);
Run Code Online (Sandbox Code Playgroud)
并将它们链接到system()文档.然后我仔细观察并注意到文档并没有真正谈论$rc但是相反$?,我觉得有点尴尬,并出现以下问题:
是否有区别:
system(...);
if ($? == -1) {
print "failed to execute: $!\n";
}
elsif ($? & 127) {
printf "child died with signal %d, %s coredump\n",
($? & 127), ($? & 128) ? 'with' : 'without';
}
else {
printf "child exited with value %d\n", $? >> 8;
}
Run Code Online (Sandbox Code Playgroud)
和
my $rc = system(...);
if ($rc …Run Code Online (Sandbox Code Playgroud) 我有习惯用我的每个脚本启动
use strict;
use warnings;
Run Code Online (Sandbox Code Playgroud)
但是这里有一些高级别的研究员推荐
use warnings 'all';
Run Code Online (Sandbox Code Playgroud)
如果我理解他们,后者甚至比第一个更好.所以我通读了文档并找到了
所有警告都通过以下任一方式在块中启用:
Run Code Online (Sandbox Code Playgroud)use warnings; use warnings 'all';
即使是骆驼书,也没有什么不同:
Run Code Online (Sandbox Code Playgroud)use warnings; # same as importing "all"
所以
use warnings;不会捕获),或者ps -ef对ps aux吗?有些人使用这个,而有些人更喜欢另一个.我想将时间戳从本地时间转换为GMT.我有遗留代码,使用Time::Local::timelocal()和"手动"执行此操作gmtime.它有效,但我不喜欢它,Time::Piece而是想用它代替.我用这个答案这样做(虽然他们正在转换,但我能够+用-:-) 取代).
这是我的代码:
#!/usr/bin/env perl
use strict;
use warnings;
use Time::Local;
use Time::Piece;
use POSIX qw(strftime);
sub local_to_utc_timelocal
{
my $local_ts = shift;
my ( $year, $mon, $mday, $hour, $min, $sec )
= ( $local_ts =~ /(\d\d)-(\d\d)-(\d\d) (\d\d):(\d\d):(\d\d)/ );
my $local_secs = Time::Local::timelocal( $sec, $min, $hour, $mday, $mon - 1, $year );
return POSIX::strftime( '%y-%m-%d %H:%M:%S', gmtime($local_secs) );
}
sub local_to_utc_timepiece
{
my $local_ts = shift;
my $local_tp …Run Code Online (Sandbox Code Playgroud) 我最近看到了一个不熟悉Perl的人的代码.他想比较两个字符串的相等性,但不知道eq运算符,所以他这样使用=~:
my $str1 = 'foobar';
my $str2 = 'bar';
if ( $str1 =~ $str2 ) {
print "strings are equal\n";
}
Run Code Online (Sandbox Code Playgroud)
另一个片段是
if ( $str1 =~ "foo" ) {
print "string equals 'foo'\n";
}
Run Code Online (Sandbox Code Playgroud)
当然,它应该只是阅读$str1 eq $str2并$str1 eq "foo"避免误报.
我运行代码Deparse,它表示一切正常:
$ perl -MO=Deparse -e 'use strict;
use warnings;
my $str1="foobar";
my $str2="bar";
$str1 =~ $str2;
$str1 =~ "bar";'
use warnings;
use strict;
my $str1 = 'foobar';
my $str2 = 'bar'; …Run Code Online (Sandbox Code Playgroud) 这看起来很简单,但是由于我是新手,我很难搞清楚它.我现在一直在查看关于循环的大量文档,我仍然对此感到困惑...我有一个包含while循环的sub我想在循环外部的循环中使用一个变量值(在循环运行之后),但是当我尝试打印出变量,或者将它从sub返回时,它不会工作,只有当我从循环中打印变量才能工作..我会很感激任何关于我做错的建议.
不起作用(不打印$ test):
sub testthis {
$i = 1;
while ($i <= 2) {
my $test = 'its working' ;
$i++ ;
}
print $test ;
}
&testthis ;
Run Code Online (Sandbox Code Playgroud)
Works,打印$ test:
sub testthis {
$i = 1;
while ($i <= 2) {
my $test = 'its working' ;
$i++ ;
print $test ;
}
}
&testthis ;
Run Code Online (Sandbox Code Playgroud) import sys
s1 = input()
s2 = sys.stdin.read(1)
#type "s" for example
s1 == "s" #False
s2 == "s" #True
Run Code Online (Sandbox Code Playgroud)
为什么?我怎样才能input()正常工作?我试图编码/解码s1,但它不起作用.
谢谢.
我有一台工作中的计算机,有时我会从家里唤醒以访问它,但是当启动并从我们的 DHCP 服务器获取另一个 IP 地址时,我该如何访问它?
情况和我的“工作流程”如下:
现在理论上,只要我知道它的 IP 地址,我就可以通过 SSH 连接到我的办公室 PC。有时它变得相同,有时它会改变。为了规避这一点,我有以下想法:
所有计算机都运行 Linux;家里的 Ubuntu 14.04,办公室服务器上的 SLES,我办公室 PC 上的 OpenSUSE 13.1。这一切都不是问题。
为了让这一切正常工作,我只需要在我的办公室 PC 上编写一个脚本,该脚本在网络启动并运行时在启动时运行。
我的脚本(publish_ip.sh)如下:
# get own IP address:
ip=$(ip addr show | awk '$1=="inet" && $2 !~ /127\.0\.0\.1/ { split($2, a, "/"); print a[1]}'); …Run Code Online (Sandbox Code Playgroud) 我有一个带有多个行和列的菜单(食品)的表.第二列包含食品的链接.当用户单击它时,该项目将添加到购物车.
我想给用户一些视觉反馈,点击和添加实际工作.我已经有一个链接的点击处理程序,它将点击的项目添加到购物车.一个简单的alert('Item successfully added');
作品,但并不是很漂亮.
我希望表格单元格(或整行)"闪烁"一次.通过"闪烁"我的意思是"将其背景颜色从当前(浅灰色)平滑地改变为例如黄色然后再恢复正常".这应该只发生一次.
我正在使用jQuery 2.x和Bootstrap 3.x.
到目前为止,我的(简化)代码如下所示:
$('a[href="#"]').on('click', function(event) {
// code to add the item to shopping cart (AJAX), omitted here
// Upon successful return of the AJAX data:
$(this).closest('tr').css('background-color', 'yellow');
});Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>1</td>
<td><a href="#">Hamburger</a>
</td>
<td>2.65</td>
</tr>
<tr>
<td>2</td>
<td><a href="#">Cheeseburger</a>
</td>
<td>3.25</td>
</tr>
</table>Run Code Online (Sandbox Code Playgroud)
如何使行闪烁而不是简单地改变其背景颜色?
我在编写的perl脚本的内存使用方面遇到了一些问题(下面的代码).该脚本启动一些变量,用数据填充它们,然后再次取消定义它们.但是,删除所有内容后脚本的内存使用量仍然很高,不包含任何数据.
Accoring到ps脚本使用的前39秒内1.027 MB内存(RSS)(foreach循环之前,所以一切).然后,内存使用量开始上升,最终在204.391 Mb和172.410 Mb之间波动.但是,即使在脚本的最后10秒内(应该删除所有数据),内存使用量也不会低于172.410 Mb.
有没有办法永久删除perl中的变量及其中的所有数据(为了减少脚本的内存使用量)?如果是这样,我该怎么做?
use strict;
use warnings;
sleep(30);
my $ELEMENTS = 1_000_000;
my $MAX_ELEMENT = 1_000_000_000;
my $if_condition = 1;
sleep(5);
my %hash = (1 => {}, 2 => {}, 3 => {}, 4 => {});
foreach my $key (keys %hash){
if( $if_condition ){
my $arrref1 = [ (rand($MAX_ELEMENT)) x $ELEMENTS ];
my $arrref2 = [ (rand($MAX_ELEMENT)) x $ELEMENTS ];
my $arrref3 = [ (rand($MAX_ELEMENT)) x $ELEMENTS ];
sleep(2);
if(!defined($hash{$key}->{'amplification'})){
$hash{$key}->{'amplification'} = [];
} …Run Code Online (Sandbox Code Playgroud) 我正在使用Dancer2来构建Web应用程序.它工作得很好但是当我在浏览器中查看源代码时,生成的HTML源代码充满了分散的空白,就像这样
<tr>
<td>2</td>
<td>Cheeseburger</td>
<td>4.50 €</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我的模板<% ... %>在现在空白的地方有代码.我更喜欢它看起来像这样:
<tr>
<td>2</td>
<td>Cheeseburger</td>
<td>4.50 €</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
或者,甚至更好:
<tr><td>2</td><td>Cheeseburger</td><td>4.50 €</td></tr>
Run Code Online (Sandbox Code Playgroud)
我正在使用Template :: Toolkit,并认为该TRIM属性正是我需要的,并将其添加到我的config.yml:
template: "template_toolkit"
session: "YAML"
engines:
session:
YAML:
cookie_duration: 6 months
template:
template_toolkit:
start_tag: '<%'
end_tag: '%>'
TRIM: '1'
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我已经改变start_tag和end_tag不同的东西(验证此文件被读取)和实际工作.但是TRIM选项没有.
我使用了错误的选项或在错误的地方提供它吗?我所做的所有谷歌搜索都展示了如何以编程方式设置TT选项,例如在这个答案中.但由于我没有明确地实例化TT相关的任何内容,我甚至不知道应该在哪里放置这样的代码.
我创建了我的应用程序dancer2 -a so.
意见/ index.tt
<table>
<tbody>
<% FOREACH item in group.items %>
<tr>
<td><% item.order_num %></td>
<%# one-line comment %>
<%# one-line …Run Code Online (Sandbox Code Playgroud) 假设我打开了一个文件来读取它的JSON数据:
import json
with open('filename', 'r') as infile:
data = json.load(infile)
Run Code Online (Sandbox Code Playgroud)
对于我要使用的pickle文件:
import pickle
with open('filename', 'r') as infile:
data = pickle.load(infile)
Run Code Online (Sandbox Code Playgroud)
现在我希望能够将我的代码段用于两种格式,即:
import json
import pickle
def read_data(filename, preferred_serializer)
with open(filename, 'r') as infile:
data = preferred_serializer.load(infile)
return data
Run Code Online (Sandbox Code Playgroud)
并称之为:
data1 = read_data('file.pickle', pickle)
data2 = read_data('file.json', json)
Run Code Online (Sandbox Code Playgroud)
这似乎是因为两者的工作json和pickle共享相同的API load(infile).但我想知道它是否只是偶然发挥作用,或者这是否是定义的行为和合理的方法.
我有一个包含文字的文件:
hello mayank1 kumar mayank21
yadav Kevin has at most
K
K minutes to perform this operations. He decides mayank3 that the string is super mayank4
if it is the lexicographically
smallest among all possible strings mayank15
that he can get. Your task is to help Kevin and
find this mayank2 lexicographically mayank8 smallest string mayank9
Run Code Online (Sandbox Code Playgroud)
我怎么能找到所有mayank<number>?
我试过了:
use strict;
open( FH, "testfile.txt" ) or die "Can't open file for reading.";
while ( my $line = <FH> ) …Run Code Online (Sandbox Code Playgroud) 我究竟做错了什么?我尝试了很多东西,但似乎无法从这个文件中读取.谢谢!
my $d = 'URLs.txt';
open(my $fh, '<:encoding(UTF-8)', $d)
#opendir(D, "$d") || die "Can't open directory $d: $!\n";
or die "Can't open directory $d: $!\n";
my @list = readdir($fh);
closedir($fh);
foreach my $f (@list) {
my $json_data = get "$f";
my $json_obj = new JSON;
my $URLdata = $json_obj->decode($json_data);
return $URLdata->{'status'} eq 'UP';
}
Run Code Online (Sandbox Code Playgroud) perl ×9
python ×2
regex ×2
animation ×1
cgi ×1
css ×1
dancer ×1
datetime ×1
dst ×1
html ×1
input ×1
jquery ×1
linux ×1
loops ×1
networking ×1
opendir ×1
python-2.7 ×1
python-3.2 ×1
python-3.x ×1
scope ×1
ssh ×1
systemd ×1
variables ×1
while-loop ×1