in reply to how to stop the file

are you using strict and warnings? i can't tell from your code, but i don't see any my declarations. your example of the while/if/last loop should work. that is, last should exit the while loop. here's my code, it works. the output is below it.

#!/usr/local/bin/perl -w use strict; $|++; my $r; while($r=<DATA>) { print "hi$r"; if($r eq "\n") { last; } print "bye$r\n"; } __DATA__ 1 2 3 4
the output:

C:\WINDOWS\Desktop>perl test_last.pl hi1 bye1 hi2 bye2 hi3 bye3 hi C:\WINDOWS\Desktop>
are you certain "\n" is the condition you need to stop the loop? or is it EOF? if it's the end of the file you're looking for, i'd suggest something like

#!/usr/local/bin/perl -w use strict; $|++; while(<DATA>) { print "$_"; } __DATA__ 1 2 3 4
if you're not using strict, you might want to read up on it. start here, at Use strict warnings and diagnostics or die.

~Particle