Two things of note.
The two lines of code below are identical, thanks to magic in the perl parser.
while (<fh>) { ... }
while (defined ($_ = <fh>)) { ... }
Your code, shown below, does not work the same way. {update: proven wrong below, but I still wouldn't use it}
while ($var = <fh>) { ... }
Also, the
.. operator can't be used in the way you're working on your latter example. It needs to go between two complete expressions that will be evaluated for the range flipflop. You wrote:
if ($line =~ m/$stag/ .. /$etag/)
You meant:
if (($line =~ m/$stag/) .. ($line =~ m/$etag/))
Perl thought you meant:
if (($line =~ m/$stag/) .. ($_ =~ m/$etag/))
See it? You never assigned to
$_ so it never got the end condition.
--
[ e d @ h a l l e y . c c ]