in reply to retrieve next avaiable element in sorted hash

While a hash is a bad data structure for this, a BTREE looks a lot like a hash programmatically, but this question is easy for a BTREE. Unfortunately in the most convenient BTREE implementation to use from Perl, the API is a little convoluted:
#! /usr/bin/perl use strict; use DB_File; tie my %hash, 'DB_File', undef, O_CREAT|O_RDWR, 0666, $DB_BTREE; %hash = ( '1' => 'cat', '3' => 'mouse', '5' => 'whale' ); tied(%hash)->seq(my $key = 2, my $ans, R_CURSOR); print "Found key $key, answer $ans\n";
The main reason for this API being so complicated is that you generally want somehow to indicate both the key and value discovered. This doesn't fit with the appearance a basic hash lookup. Therefore the attempt that tie makes to turn something else into an illusion of a hash has to break down..badly.