develooper Front page | perl.perl5.porters | Postings from June 2017

Re: open '>:encoding(UTF-8)' masking write errors?

Thread Previous | Thread Next
From:
Tony Cook
Date:
June 21, 2017 01:01
Subject:
Re: open '>:encoding(UTF-8)' masking write errors?
Message ID:
20170621010029.GA28236@mars.tony.develop-help.com
On Sat, Jun 17, 2017 at 03:25:59PM +0100, Dave Mitchell wrote:
> Consider the following code:
> 
>     my $data = 'x' x 1024;
>     my $file = '/dev/full';
> 
>     open my $out, '>:encoding(UTF-8)', $file
>         or die "Error: can't open '$file' for writing: $!\n";
>     print $out $data or die "Error: writing to file '$file': $!\n";
>     close $out       or die "Error: closing file '$file': $!\n";
> 
> It runs without error, which I find surprising and disturbing.
> Changing the open line to
> 
>     open my $out, '>', $file
> 
> gives the error I expect:
> 
>     Error: closing file '/dev/full': No space left on device
> 
> Is this a bug or do I have unrealistic expectations?
> 
> An strace shows that in both cases, the OS is returning an error:
> 
>     write(4, "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"..., 1024) = -1 ENOSPC (No space left on device)

That looks like a bug to me.

Tony

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About