def select( *keys )
        if block_given?
            self.keys.collect { |k| v = self[k]; [k, v] if yield k, v }.compact
        else
            values_at( *keys )
        end
    end
def select( *keys )
        if block_given?
            self.keys.collect { |k| v = self[k]; [k, v] if yield k, v }.compact
        else
            values_at( *keys )
        end
    end
:call-seq:
   ydbm.select { |key, value| ... }
   ydbm.select(*keys)

 If a block is provided, returns a new array containing [key, value] pairs
 for which the block returns true.

 Otherwise, same as #values_at