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

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??

I think the OP's example is misleading you somewhat. When /dev/urandom says "That would not serve my purposes, as any modules in question will not yet be loaded when the subref receives it." I take that to mean that what /dev/urandom will do with the repurposed require function is to actually manipulate the module the instant it gets loaded, before anyone else can do anything with it. The original post said that it illustrated the issue, but not the why of it. Perhaps a better illustration would be:

*CORE::GLOBAL::require = sub { CORE::require($_[0]); if ($_[0] eq 'Net/Ping.pm') { $Net::Ping::TIMEOUT = 5000; # milliseconds } };
I believe the OP means that they want to do something like that (I don't think that the code there would work even if everything else works - I don't think Net::Ping has a $TIMEOUT available). Perhaps check the $VERSION, or whatever. Modifying the @INC to include a code ref wouldn't allow for this - you merely return the code (via a filehandle), but at this point, it hasn't been compiled, so you can't interact with it yet.

I suspect it'd be better to derive from Net::Ping, and change the code to require that module instead... but we really don't have enough details to be definitive about this.


In reply to Re^4: Overriding the built-in require function (@INC) by Tanktalus
in thread Overriding the built-in require function by /dev/urandom

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (6)
As of 2024-04-23 09:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found