This suggestion certainly won't help your efficiency, but simply grepping for lines that match /LONDON/ doesn't meet your specs. How important the difference is, I don't know, but to meet those specs (and assuming $n holds the number of the field you want):
my @london = grep { (split /\t/)[$n] =~ /LONDON/ } grep { /LONDON/ } @
+records;
This would only perform the split on the members of @records that matched somewhere.
perl -e 'print "How sweet does a rose smell? "; chomp ($n = <STDIN>);
+$rose = "smells sweet to degree $n"; *other_name = *rose; print "$oth
+er_name\n"'