3

What is the difference between these two code snippets?

  1. open (MYFILE, '>>data.txt');

  2. open (MYFILE, '>data.txt');

animuson
  • 53,861
  • 28
  • 137
  • 147
Karandeep Singh
  • 1,223
  • 5
  • 22
  • 34
  • 6
    Also note that the 3-argument form of open, along with the use of lexical file handles, is generally recommended. In other words, use a scalar variable, rather than something like `MYFILE`, for your file handle. For example: `open(my $file_handle, '>', 'output.txt') or die $!`. – FMc Jun 09 '10 at 11:23
  • 5
    This really isn't "in Perl". Perl just continues the *NIX idiom. – Axeman Jun 09 '10 at 13:10
  • 2
    Is this homework? You could have found the answer simply by reading the documentation. – Ether Jun 09 '10 at 14:52

1 Answers1

13
  1. open (MYFILE, '>>data.txt') — Open data.txt, keep the original data, append data from the end.
  2. open (MYFILE, '>data.txt') — Open data.txt, delete everything inside, and write data from the start.

From perldoc -f open:

If MODE is '<' or nothing, the file is opened for input. If MODE is '>', the file is truncated and opened for output, being created if necessary. If MODE is '>>', the file is opened for appending, again being created if necessary.

It stems from the shell usage that,

  • cmd < file.txt to copy file into stdin,
  • cmd > file.txt to write stdout into a file, and
  • cmd >> file.txt to append stdout to the end of the file.
kennytm
  • 510,854
  • 105
  • 1,084
  • 1,005
  • @mirod: `open(MYFILE, '>data.txt')` is equivalent to `open(MYFILE, '>', 'data.txt')`. Please read the link. – kennytm Jun 09 '10 at 09:26