open#

Synopsis#

open(my $fh, '<', $filename);       # read
open(my $fh, '>', $filename);       # write (truncate)
open(my $fh, '>>', $filename);      # append
open(my $fh, '+<', $filename);      # read/write
open(my $fh, '|-', @cmd);           # pipe to command
open(my $fh, '-|', @cmd);           # pipe from command
open(my $fh, '>&', $other_fh);      # dup for writing
open(my $fh, '<', \$scalar);        # in-memory I/O
open(FH, "<$filename");             # 2-arg form

Description#

Opens a file, pipe, or duplicates a file descriptor, associating it with a filehandle.

Supports both the 2-argument form (mode embedded in the filename string) and the 3-argument form (separate mode and filename). The 3-argument form is preferred as it avoids shell metacharacter issues.

Mode

Meaning

<

Read

>

Write (truncate)

>>

Append

+<

Read/write (existing file)

+>

Write/read (truncate)

|-

Pipe to command

-|

Pipe from command

>& / <&

Dup filehandle

>&= / <&=

Dup by file descriptor number

In-memory I/O is supported via scalar references: open $fh, '>', \$buf.

Returns 1 on success, undef on failure. Sets $! on error.

See also#

close, binmode, print, read, sysopen, perlopentut