in reply to Creating a text index for a text file

This is quite easy: you want single letters between ':'s to be sorted as if they were without the ':'. As we're at it, we do a case-insensitive sort. That's the beauty of perl hashes! :-)
use strict; my %aq = map ( (lc ((/^:(.):/) ? $1 : $_) => $_) , <DATA>); foreach my $k ( sort keys %aq ) { print $aq{$k}; } __DATA__ D for Donkey B for Box B for Bubble C for Cat A for Alpha :A: :B: :C: :D:
This stuff prints:
:A: A for Alpha :B: B for Box B for Bubble :C: C for Cat :D: D for Donkey
Hope this is what you were looking for.