That code produces the warning:
Exiting eval via last at line 8, <DATA> line 5.
when warnings are turned on.... I'm not entirely sure why 'last'ing out of an eval block is bad, but I do know that eval is overkill for what you've written. do is probably more appropriate. The following code issues no warnings:
#!/usr/bin/perl -wT
use strict;
my $begin='banana';
my $end='grape';
while(<DATA>) {
/^$begin$/ && do { /^$end$/ ? last : print while (<DATA>) }
}
__DATA__
apple
banana
pear
peach
grape
orange
Update: You might want to replace the last above with a next if you want multiple windows to print... For instance, it changes what gets printed using this data:
__DATA__
banana
pear
peach
grape
orange
banana
cow
pig
grape
Notice that 'cow' and 'pig' are between a second set of on/off toggles... last will skip them next will print them. Which is the desired behavior? Your guess is as good as mine.
-Blake
|