I am trying to put together a search and replace program that I can string
together with typical unix shell commands like find, and grep. However, I
can't get past the initial read of the files I want to process, using the
diamond operator. I lose the first argument in the list every time. I put
the below code together for debugging purposes to figure out what's going
on.
while (<>) {
@files = <STDIN>;
}
$count = scalar @files;
print "There are $count files in the process list!\n";
print @files;
When I run this with the command: find /u06 -name glog.log.bak* |
/export/home/jwozniak/fm.pl
It drops the first file in the list for output.
The find command by itself returns 10 files as follows:
/u06/logs/glog.log.bak.3
/u06/logs/glog.log.bak.4
/u06/logs/glog.log.bak.1
/u06/logs/glog.log.bak.2
/u06/logs/glog.log.bak.5
/u06/logs/glog.log.bak.6
/u06/logs/glog.log.bak.7
/u06/logs/glog.log.bak.8
/u06/logs/glog.log.bak.9
/u06/logs/glog.log.bak.10
However the output piped to my perl program drops the first line of input
every time. For some reason /u06/logs/glog.log.bak.3 does not make it into
the files array? Regardless of whether if I pipe it in from the find
command or simply read the same data in from a file, and instead the output
from perl is as follows
There are 9 files in the process list!
/u06/logs/glog.log.bak.4
/u06/logs/glog.log.bak.1
/u06/logs/glog.log.bak.2
/u06/logs/glog.log.bak.5
/u06/logs/glog.log.bak.6
/u06/logs/glog.log.bak.7
/u06/logs/glog.log.bak.8
/u06/logs/glog.log.bak.9
/u06/logs/glog.log.bak.10
What am I missing?
Regards,
Jason Wozniak
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]