in reply to Configurable key orders

Sounds like you're reaching the point where you do want to introduce a DB. Something like DBD::SQLite would let you have the underlying SQL engine do the bucketing for you quickly without keeping multiple views resident in memory.

Update: And as to your actual question you could store the original split values into a hash instead perhaps:

my %vals; @vals{ qw( ip name proto email ) } = /^.../;

Then you just use $vals{ $order[0] } to get what was $ip etc.

The cake is a lie.
The cake is a lie.
The cake is a lie.