It's still not entirely clear to me what you want to achieve.

In case the idea is to override a Perl builtin (kind of analogously to what you could use LD_PRELOAD for with C libs), you could use CORE::GLOBAL, e.g. like this (I'm using getppid() in the example, as Perl has no builtin named getpid() ):

#!/usr/bin/perl BEGIN { *CORE::GLOBAL::getppid = sub () { return "Hello world!\n" . CORE::getppid(); } } print getppid();

(but note that you can only override builtins whose effective prototype can be expressed as a Perl prototype — print() for example cannot be overridden due to its print FH $something, ... syntax (i.e. no comma after FH) )

When you put the override code into a module (say "mygetppid.pm"):

*CORE::GLOBAL::getppid = sub () { return "Hello world!\n" . CORE::getppid(); }; 1;

you could then write

$ perl -Mmygetppid -e "print getppid()" Hello world! 23726

where the -Mmygetppid is sematically similar to saying something like LD_PRELOAD=mygetppid.so in order to override some function call made from a given C binary.

OTOH, if the idea is to use the regular LD_PRELOAD mechanism to override some C library function which is being called under the hood by perl, you can do it just the same way you would if that library function was being called by some other binary. For example, Re: mocking or trapping system calls shows how to override the C lib execvp() call (invoked from perl).


In reply to Re^3: Dynamic linker by almut
in thread Dynamic linker by zamanfou

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



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.