open FILE, '<', $file or die "..."; while () { print if m/interesting/; handle(FILE, 'that') if m/that/; } close FILE; #### open my {I/O}FILE, '<', $file or die "..."; while (<{I/O}FILE>) { print if m/interesting/; handle({I/O}FILE, 'that') if m/that/; } close {I/O}FILE; #### open my {I/O}FILE, '<', $file or die "..."; while (defined($_ = {I/O}FILE->readline)) { print $_ if $_ =~ m/interesting/; handle({I/O}FILE, 'that') if $_ =~ m/that/; } {I/O}FILE->close; #### sub handle { my $fh = shift; my $what = shift; ... }