<[EMAIL PROTECTED]> wrote: > > I need to read from more than one file at a time and do some > operation on the strings and join them together, and put into > one output file. > > Here is the code. But I noticed the second file never get > read. It must be sth very simple to overcome this. Can anyone > give me a hint? > > thanks, > Ben > > # Usage: perl jointfiles.pl infile1 infile2 outfile
use strict; use warnings; > open (IN1, $ARGV[0]); > open (IN2, $ARGV[1]); > open (OUT, ">$ARGV[2]"); As John says, open IN1, $ARGV[0] or die $!; open IN2, $ARGV[1] or die $!; open OUT, ">$ARGV[2]" or die $!; > print "Input fileis : $ARGV[0], $ARGV[1]\n"; > print "Output file: $ARGV[2]\n"; > > while(<IN1>) > { > chomp; > $in1=$_; > <IN2>; > $in2=$_; > printf OUT "$in1$in2\n"; > } You need tp think about what happens when the two files are different lengths. You may not expect that to happen but your code should still handle that case. Some symmetry between the handling of the two files would also be nice. Finally you should really use 'print' here instead of 'printf'. This code reads a line from each file and outputs them both until one or other file is exhausted. my ($in1, $in2); while (defined ($in1 = <IN1>) and defined ($in2 = <IN2>)) { chomp ($in1, $in2); print OUT "$in1$in2\n"; } > close(IN1); > close(IN2); > close(OUT); HTH, Rob -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]