我只是有一种我想理解的奇怪行为。
这是我的perl脚本,我只检查是否存在某些文件夹:
#!/usr/bin/env perl
use warnings;
$root = "C:\\Data\\Tests";
@check = ("folder1", "folder2", "folder3");
foreach $check (@check){
print $check;
print -d "$root\\$check" ? " OK\n" : die " NOK : not accessible";
}
现在,假设缺少folder3,所以我应该输出:
folder1 OK
folder2 OK
folder3 NOK : not accessible at C:\Data\Tests\strange.pl line 8.
相反,我有:
folder1 OK
folder2 OK
NOK : not accessible at C:\Data\Tests\strange.pl line 8.
folder3
所以看起来在最后一个循环中,第二行在第一行之前执行..
有人知道为什么吗?
答案 0 :(得分:11)
与所以看起来在最后一个循环中,第二行在第一行之前执行..
有人知道为什么吗?
die ".."
不同的 print
转到STDERR
此外,输出是缓冲的,因此您可能希望禁用它以获得所需的输出,
STDOUT->autoflush();
STDERR->autoflush();
答案 1 :(得分:0)
您应该只使用一个print语句,如下所示:
jQuery(document).ready(function ($) {
update_data();
function update_data() {
$.ajax({
type: "POST",
url: "$URL",
data: {update_current_time:1},
success: function(response){
setTimeout(update_data, 5000);
},
error: function(){
setTimeout(update_data, 5000);
}
});
}
});