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

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

Thread Next
From:
Dave Mitchell
Date:
June 17, 2017 14:26
Subject:
open '>:encoding(UTF-8)' masking write errors?
Message ID:
20170617142559.GD3074@iabyn.com
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


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