in reply to Re^5: using lexically scoped variable as a filehandle
in thread using lexically scoped variable as a filehandle

A question, more for curiosity than utility:

Let's say I use Fatal qw{ close }; which changes the behavior of close to throw an exception on failure instead of returning false. Let's also say the automatic (invisible) end-of-scope close failed. Would the exception still be thrown?

If yes, is this useful for improving the context-related situation?

Replies are listed 'Best First'.
Re^7: using lexically scoped variable as a filehandle
by BrowserUk (Patriarch) on Feb 21, 2007 at 22:28 UTC

    I'm the wrong person to ask as I've never felt the need for Fatal.

    I've also tried on several occasions to actually create the situation where a write to a buffered file, passed the end of available disk space, succeeds, in order to try and provoke close failure:

    !dir I:*;; Volume in drive I is RAMDISK Volume Serial Number is 7FFF-FFFF Directory of I:\ 2007-02-21 22:12 20,971,522 fred 2007-02-21 22:14 985,570 fred2 2 File(s) 21,957,092 bytes 0 Dir(s) 1,024 bytes free open O, '>', 'I:fred3';; select O; $|++; select STDOUT;; print O chr( 0 ) x 1000 or warn $!;; print O chr( 0 ) x 25 or warn $!;; No space left on device at (eval 6) line 1, <STDIN> line 5.

    ... but as you can see, but this is always detected when writing. Maybe this used to occur on old filesystems, but I cannot find a way to make it happen now, so I cannot determine an answer for you that way either.

    Can close fail for any other reason?


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.