The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

open_file(my $f, $filename, %args)

$args{mode} - mode to open, <, > or >> $args{use_filename_encoding} - (TRUE) - encode to binary string, (FALSE) - don't tocuh (already a binary string). Default TRUE $args{file_encoding} or $args{binary} - file content encoding or it's a binary file (mutual exclusive) $args{not_empty} - assert that file is not empty after open

Assertions made (using "confess"):

1) Bad arguments (programmer's error) 2) File is not a plain file 3) File is not a plain file, but after open (race conditions) 4) File is empty and not_empty specified 5) File is empty and not_empty specified, but after open (race conditions)

NOTE: If you want exceptions for (2) and (4) - check it before open_file. And additional checks inside open_file will prevent race conditions