我只是有一种我想理解的奇怪行为.
这是我的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";
}
Run Code Online (Sandbox Code Playgroud)
现在,假设folder3丢失了,所以我应该输出:
folder1 OK
folder2 OK
folder3 NOK : not accessible at C:\Data\Tests\strange.pl line 8.
Run Code Online (Sandbox Code Playgroud)
相反,我有:
folder1 OK
folder2 OK
NOK : not accessible at C:\Data\Tests\strange.pl line 8.
folder3
Run Code Online (Sandbox Code Playgroud)
所以它看起来像在最后一个循环中,第二行在第一行之前执行..
有人知道为什么吗?
Сух*_*й27 11
所以它看起来像在最后一个循环中,第二行在第一行之前执行..
有人知道为什么吗?
die ".."不像print去STDERR
此外,输出是缓冲的,因此您可能希望禁用它以获得所需的输出,
STDOUT->autoflush();
STDERR->autoflush();
Run Code Online (Sandbox Code Playgroud)