| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- [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"
|