# Code using iterator:
while( ) {
process_line( $_ );
}
# Code using call-back:
File::ProcessLines(
\*INPUT,
sub { process_line($_) }
);
####
# A merge sort:
my $r1= <$i1>;
my $r2= <$i2>;
while( ! eof($i1) && ! eof($i2) ) {
my $cmp= $r1 cmp $r2;
print $cmp le 0 ? $r1 : $r2;
$r1= <$i1> if $cmp le 0;
$r2= <$i2> if 0 le $cmp;
}
# ...
##
##
File::ProcessLines(
$i1,
sub { # sub1
my $r1= shift(@_);
File::ProcessLines(
$i2,
sub { # sub2
my $r2= shift(@_);
if( $r1 lt $r2 ) {
return_from_sub1_but_not_from_sub2;
# ...
}
);
}
);