Hashing is a fundamental technique in Computer Science, and perfect hashing, which guarantees constant-time lookup, has particular theoretical and practical importance. The algorithm of Fredman, Komlos, and Szemeredi [1984], augmented by Dietzfelbinger, et al. [1988], is a simple perfect hashing scheme that has not seen extensive use due to poor practical performance. In this paper, we develop modifications to the previous techniques that result in a fast, space-efficient algorithm. We show the resulting algorithm is comparable to hash algorithms used in several popular dictionary libraries but is more flexible and has better theoretical performance.