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

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

Thread Next
Dave Mitchell
June 17, 2017 14:26
open '>:encoding(UTF-8)' masking write errors?
Message ID:
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)

Justice is when you get what you deserve.
Law is when you get what you pay for.

Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About