in reply to Question regarding DB_File

A B-Tree file stores its keys in sorted order, so if you do this:
$btree{"ccc"} = $foo; $btree{"aaa"} = $bar; $btree{"bbb"} = $baz; print join(" ", keys %btree), "\n";
... you'll get "aaa bbb ccc" out. (Assuming you're using the default sorting order in your btree.) Maintaining this sorted order is how B-Trees are able to locate a particular piece of information quickly. There's no easy way to get the keys out in insertion order, unless that happens to be the same as sorted order.

The only time this is really useful is when your btree file is too big to do keys %btree on in the first place, though. Otherwise, it's not much better than sort keys %hash. If your file is that big, you'll need to either use each to walk through the whole thing, or DB_File::seq to find a particular range.