use strict::ModuleName in a module/class is a compile-term assertion that the current package name jives with the way that that file is named.
It's basically just for catching those annoying cases where you name the module Foo/BarBaz.pm but you start out the file with
package Foo::Barbaz;. Adding
use strict::ModuleName; after that will catch that!
(Implementation note: the module gains extra slack by applying to itself.)
You are welcome to now praise the module.
You are also welcome to bray "But who'd ever want that! I don't ever make mistakes!", but do bear in mind that I still have that ice-axe.