Because otherwise you're interleaving execution orders. `use` is basically `BEGIN { require Module; Module->import( ... ); }` so by putting this code in a `BEGIN` block you actually make sure the execution order is straightforward.

Otherwise, you never really know what is going to happen between the time you bring in this module and the time the subsequent line of code runs. If someone else has a `BEGIN` block then it might get confusing.

Since this is, in essence, a compile-time option and you NEVER want anybody to use the wrong protocol version, it also makes more sense to me to run this at compile time.