in reply to O_RDWR and O_APPEND???

In addition to what the others have said, another problem with your code is that a file handle maintains only one file pointer, which is used for both read and write operations.  In other words, if you append to a file, the file pointer is positioned to the end of the file, so if you want to read from the same file thereafter, you have to reposition the file pointer to the beginning (using seek):

#!/usr/bin/perl -w use strict; use FileHandle; use Fcntl qw(O_RDWR O_APPEND SEEK_SET); $| = 1; my $flag = 1; my $cntr = 0; my $cntrF = shift @ARGV; my $CF = new FileHandle $cntrF, O_RDWR | O_APPEND or die "'$cntrF' did + not open: $!\n"; print $CF "$flag\n"; seek $CF, 0, SEEK_SET; while (<$CF>) { while (m/\b$flag\b/g) { $cntr++; } } print "cntr = $cntr\n";
$ echo 1 1 1 > foo.dat $ ./923297.pl foo.dat cntr = 4