views:

115

answers:

1

What is the difference between these two code snippets?

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

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

+10  A: 
  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
@mirod: `open(MYFILE, '>data.txt')` is equivalent to `open(MYFILE, '>', 'data.txt')`. Please read the link.
KennyTM
@mirod: Ok, I see what you mean. Updated to make it clearer.
KennyTM