[perl] sysopen(CD, "/dev/cd0", O_RDONLY | O_NONBLOCK) fails
Joost Bekkers
joost at jodocus.org
Fri Mar 27 13:35:35 PDT 2009
On Fri, March 27, 2009 19:59, Tobias Rehbein wrote:
> Am Thu, Mar 26, 2009 at 10:11:28PM +0000 schrieb Bruce Cran:
>>
> Hm. Tried this and got ineresting results:
>
>> use POSIX;
>> sysopen(CD,"/dev/cd0", O_RDONLY|O_NONBLOCK) || perror("sysopen")
> works fine, but
>> use POSIX;
>> sysopen(CD,"/dev/cd0", O_RDONLY|O_NONBLOCK)
>> print "$!"
> prints "No such file or directory"
>
> Well, I think I'll have to accept that sysopen works but $! does not...
> After
> all sysopen is more important to me ;)
As the perlvar manpage tells us:
$! If used numerically, yields the current value of the C "errno"
variable, or in other words, if a system or library call fails,
it sets this variable. This means that the value of $! is
meaningful only immediately after a failure.
The value of $! is NOT an indicator of success or failure. It only tells
you why something failed. If something succeeded $! is usualy left
untouched.
Joost.
More information about the freebsd-questions
mailing list