First of all
Yes, even you can use CPAN. The basic equivalent of a C++ std::map is the hash. However, as you know, Perl hashes do not maintain order. For an ordered hash, there's
Tie::IxHash, which doesn't have specific search functions, but does let you reorder the data structure by key. Even though you mention std::map (hash), you might want to check out the options in
List::MoreUtils and
List::Util.