[JSON] [JSON::PP] [JSON::XS] prefer = Cpanel::JSON::XS reason = "Use a correct & fast JSON parser" [YAML] [YAML::PP] [YAML::Syck] prefer = YAML::XS reason = "Use a correct & fast YAML parser" [Sereal] [Storable] prefer = Cpanel::JSON::XS reason = "JSON/YAML is preferred serialization format" [File::Slurper] prefer = File::Slurper::Temp for = write_binary write_text reason = "Avoid mangling files with concurrent writes" [constant] prefer = Readonly reason = "A Readonly variable interpolates, has a sigil to find it by, and refuses an assignment at run time" [perl/rand] prefer = Crypt::PRNG reason = builtin rand() insecure [perl/sleep] prefer = Time::HiRes reason = "The builtin sleeps whole seconds, so a poll interval cannot be shorter than a second" ; tCMS: no [perl/time]. Its times are stored whole-second timestamps, such as ; a post's created, and not intervals, and the tests set the clock through ; CORE::GLOBAL::time, which Time::HiRes::time does not use. [perl/alarm] prefer = Time::HiRes reason = "The builtin takes whole seconds, so it cannot time out sooner than a second" [perl/readdir] reason="Use File::Find::find() instead" [Term::ReadKey] [IO::Prompt] [IO::Prompt::Tiny] [Term::Prompt] [Prompt::Timeout] prefer = IO::Prompter reason = "One way to ask for input; it suppresses echo and copes with not having a terminal" [MIME::Base32::XS] [Encode::Base2N] prefer = MIME::Base32 reason = "MIME::Base32::XS corrupts the heap and pads its output, and Encode::Base2N needs a C++ build that cpm cannot install"