in reply to Processing slurped file.

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"'