open - perl pragma to set default disciplines for input and output

- NAME
- SYNOPSIS
- DESCRIPTION
- UNIMPLEMENTED FUNCTIONALITY
- SEE ALSO

# NAME

open - perl pragma to set default disciplines for input and output

# SYNOPSIS

        use open IN => ":crlf", OUT => ":raw";

# DESCRIPTION

The open pragma is used to declare one or more default disciplines for I/O operations. Any `open()` and `readpipe()` (aka qx//) operators found within the lexical scope of this pragma will use the declared defaults. Neither `open()` with an explicit set of disciplines, nor `sysopen()` are influenced by this pragma.

Only the two pseudo-disciplines ``:raw'' and ``:crlf'' are currently available.

The ``:raw'' discipline corresponds to ``binary mode'' and the ``:crlf'' discipline corresponds to ``text mode'' on platforms that distinguish between the two modes when opening files (which is many DOS-like platforms, including Windows). These two disciplines are currently no-ops on platforms where `binmode()` is a no-op, but will be supported everywhere in future.

# UNIMPLEMENTED FUNCTIONALITY

Full-fledged support for I/O disciplines is currently unimplemented. When they are eventually supported, this pragma will serve as one of the interfaces to declare default disciplines for all I/O.

In future, any default disciplines declared by this pragma will be available by the special discipline name ``:DEFAULT'', and could be used within handle constructors that allow disciplines to be specified. This would make it possible to stack new disciplines over the default ones.

        open FH, "<:para :DEFAULT", $file or die "can't open $file: $!";

Socket and directory handles will also support disciplines in future.

Full support for I/O disciplines will enable all of the supported disciplines to work on all platforms.

# SEE ALSO

binmode in the perlfunc manpage, open in the perlfunc manpage, the perlunicode manpage

open - perl pragma to set default disciplines for input and output