Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re^3: slow startup for some common modules? (autodie, Pod::Usage, Getopt::Long))

by Marshall (Canon)
on Dec 29, 2022 at 05:44 UTC ( [id://11149180]=note: print w/replies, xml ) Need Help??


in reply to Re^2: slow startup for some common modules? (autodie, Pod::Usage, Getopt::Long))
in thread slow startup for some common modules? (autodie, Pod::Usage, Getopt::Long))

use Pod::Usage; # is the same as BEGIN { require Pod::Usage; Pod::Usage->import(); }
BEGIN blocks execute at compile time, not run time.

Assuming that often you run without ever using the Pod functions, and you want to fire that module up only if you will be needing it, you could have a runtime flag like this:

if ($needPod) { require Pod::Usage; Pod::Usage->import(); }
I leave it you to decide how this applies to your code. You have to do the require and import before using any functionality of Pod::Usage.

Usually GetOPt::Std is enough for me. I almost never use autodie and absolutely never use it in end user code.

Replies are listed 'Best First'.
Re^4: slow startup for some common modules? (autodie, Pod::Usage, Getopt::Long))
by almr (Sexton) on Jan 06, 2023 at 23:08 UTC
    Ah. Then why not use Pod::Usage if $needPod;
      > use Pod::Usage if $needPod;

      Timing! You can't make a compile-time use (the BEGIN-part) depend on run-time conditions.

      FWIW: you could use the if pragma, but only if the condition is available at compile-time

        Because use takes effect at compile time, it doesn't respect the ordinary flow control of the code being compiled. In particular, putting a use inside the false branch of a conditional doesn't prevent it from being processed. If a module or pragma only needs to be loaded conditionally, this can be done using the if pragma:

        use if $] < 5.008, "utf8"; use if WANT_WARNINGS, warnings => qw(all);

      but as you see the conditions here are (compile time) constants

      Cheers Rolf
      (addicted to the 𐍀𐌴𐍂𐌻 Programming Language :)
      Wikisyntax for the Monastery

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11149180]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others drinking their drinks and smoking their pipes about the Monastery: (2)
As of 2024-04-26 00:35 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found