The autovivification module is kind of a disaster for larger code libraries. My team noticed that it was tripling the compilation time (BEGIN interpretation time) of some of our scripts, when the scripts were modified to 'use JSON::Schema'. So, for example,
time perl -MBigLibrary -e 'use ParentModuleWhichUsesJsonSchema;'
The parent module previously compiled in ~10s (it incorporates a big chunk of the library), but after adding in JSON::Schema, it started taking ~30s. Removing the 'no autovivification' pragma got us back down to ~10s. Even trying to scope off the pragma with a { ... } block had no effect (the module still gets loaded, and still ends up hooking into every other imported module).
So, unless you are really relying on this pragma (which it doesn't look like you are - I'm assuming you were just using it defensively, for some of your exists $foo->{bar} statements?), I'd recommend dropping it from Helper.
The autovivification module is kind of a disaster for larger code libraries. My team noticed that it was tripling the compilation time (BEGIN interpretation time) of some of our scripts, when the scripts were modified to 'use JSON::Schema'. So, for example,
The parent module previously compiled in ~10s (it incorporates a big chunk of the library), but after adding in JSON::Schema, it started taking ~30s. Removing the 'no autovivification' pragma got us back down to ~10s. Even trying to scope off the pragma with a { ... } block had no effect (the module still gets loaded, and still ends up hooking into every other imported module).
So, unless you are really relying on this pragma (which it doesn't look like you are - I'm assuming you were just using it defensively, for some of your exists $foo->{bar} statements?), I'd recommend dropping it from Helper.