In Perl, you can read a file line by line without the need to load the whole file first. Use the diamond operator in a while loop (untested code):
open my $IN, '<', 'quoteout.dat' or die "$!";
my $searching_for_G;
while (<$IN>) {
$searching_for_G = 1 if 0 == index $_, 'E';
die "Error: h at line $." if $searching_for_G and 0 == index $_, '
+h';
if ($searching_for_G and 0 == index $_, 'G') {
print "Found G at line $.\n";
undef $searching_for_G;
}
}
Note that unlike in C, a string is not an array of characters in Perl (that's why I used index). Also, you did not specify what to do if G is found - should the program end or search for another E? I assumed the latter.
$. contains the input line number. See perlvar for details.