2014-07-15 4 views
6

https://stackoverflow.com/a/3220688/180275 में जवाब पता चलता है कि यदि फ़ाइल को अन्य प्रक्रिया द्वारा किया जा रहा है निर्धारित करने के लिए (के बाद एक open) $^E0x20 साथ तुलना की जा सकती:

open ($fh, "<", "the-file"); 
if ($^E == 0x20) { 
    ... 
} 

मुझे लगता है कि कोशिश की है और यह काम करता है। हालांकि, अगर मैं $^E के मान को मुद्रित करता हूं तो मुझे एक स्ट्रिंग (The process cannot access the file because it is being used by another process) मिलता है।

फिर भी एक संख्या की तुलना अभी भी संभव है?

यह विंडोज पर है।

उत्तर

9
>perl -E"open my $fh, '<', 'nonexistent'; say 0+$^E; say ''.$^E;" 
2 
The system cannot find the file specified 

$! की तरह, $^E एक dualvar, एक अदिश कि दो मान होता है। एक स्ट्रिंग है, और एक नंबर है।

>perl -E"say $^E = 0x20;" 
The process cannot access the file because it is being used by another process 
संबंधित मुद्दे

 संबंधित मुद्दे