Perfect hash functions map keys to integers without collisions, with varying trade-offs between space consumption, construction time, and query time. They have applications in databases, bioinformatics, and stringology, and have made significant progress since the last comprehensive survey in 1997.