在
https://stackoverflow.com/a/3220688/180275中,答案表明(打开后)$^ E可以与0x20进行比较,以确定另一个进程是否正在使用某个文件:
open ($fh,"<","the-file"); if ($^E == 0x20) { ... }
我试过了,它的确有效.但是,如果我打印$^ E的值,我会得到一个字符串(进程无法访问该文件,因为它正由另一个进程使用).
那么如何与一个数字进行比较呢?
这是在Windows上.
解决方法
>perl -E"open my $fh,'<','nonexistent'; say 0+$^E; say ''.$^E;" 2 The system cannot find the file specified
就像$!,$^ E是一个双变量,一个包含两个值的标量.一个是字符串,一个是数字.
>perl -E"say $^E = 0x20;" The process cannot access the file because it is being used by another process