Hi Oxy, In addition, On Mon, Mar 12, 2012 at 6:34 PM, Jim Gibson <jimsgib...@gmail.com> wrote:
> On 3/12/12 Mon Mar 12, 2012 10:17 AM, "oxy" <oxyo...@googlemail.com> > scribbled: > > > Hi, > > > > i have the following file content: numbers = one two three four > > > > I run the code: > > ================= begin code ================== > > #!/usr/bin/perl -w > > $AG2 = non; > > $AG3 = non; > > open (file , "<inpfile.txt"); > use open function three-arugment, then beware of barewords like file you used in the your code. > > > > while(<file>){if (/(.*)\s*=\s*.*three.*/) {$AG3 = $1} else {$AG3 ='not > > found 3'};}; > > while(<file>){if (/(.*)\s*=\s*.*three.*/) {$AG2 = $1} else {$AG2 ='not > > found 2'};}; > > > > print "AG2 is $AG2----------------------AG3 is $AG3 -------------\n"; > > > > ================ end code ======================== > > > > Now, only the first while command will be read. The second is ignored. > > Change the order of the lines and the same happens. > > ??????? Any idea? > > The first while loop reads the entire file and exits when the <file> > operation returns undef. > > The second while loop attempts to read the same file, the <file> operation > returns undef on its first execution, and the statements within the second > while loop are never executed. > > You may want to combine the two while loops or use some other logic to get > what you want. > > -- > Jim Gibson > > > > -- > To unsubscribe, e-mail: beginners-unsubscr...@perl.org > For additional commands, e-mail: beginners-h...@perl.org > http://learn.perl.org/ > > > -- Tim