It started around two decades ago, but I would say the "use strict if at all possible or you're doing it wrong" consensus was reached at least as long ago as 2005, being conservative. Because backwards compatibility was always seen as paramount, it never became default, but if you opted into new version features by version number[1], those advanced to enabled both new features and to turn off or warn on use of what were considered problematic features in the code. For example, a "use v5.10;" pragma would warn indirect method syntax with the assumption you never wanted that (so any new Foo("arg"); would error, so people would use Foo->new("arg"); as the sane agreed upon way it should be done), and would disable bareword filehandles (so you would need to assign them to a scalar like $FH instead of FH).
use v5.12 and later also automatically enabled strict. Perl 5.10 was released in late 2007, and 5.12 in 2010, so there was enough consensus over a decade ago to add it as the default for anyone opting into the bundle of all newer Perl features.
Thanks for that answer, very interesting to know as someone who feels like they got into perl pretty late in the game. I do appreciate it where it works for sure.
I could definitely picture programming in perl in the 90s before people commonly implemented use strict; being a complete hellscape though
Yes, and it was exacerbated by mod_perl in Apache basically working by taking a Perl script/CGI and using eval to turn it into a sub, meaning any subs defined in that script (and not a module it included) to accidentally create closures easily, which really played havoc, and so people adopted... interesting workarounds[1], all in the name of performance.