Perhaps you know too much about the way perl stores variables. You do not need the global stash to create a global variable. This should do it:

SV *v = perl_get_sv("::variable", 1)

The second parameter is a boolean flag that controls whether perl should create the variable if it does not exist. Once you have the SV pointer, you can use the rest of the perlguts API to work with it. For example, you could set its value to 0:

perl_sv_setiv(v, 0)

The perl_get_* API works with package scoped "local" variables. Lexical variables are much harder to find -- there you do need to know a lot about scratchpads and how perl stores lexical variables.

The index for Advanced Perl Programming sucks. On page 331, table 20-1, there is a brief description of the perl_get_sv function.

The Jenness/Cozens book, Extending and Embedding Perl published by Manning, has much better coverage of the perl internals. The perlguts.pod docs distributed with Perl are quite good too.


In reply to Re: Embedded Perl Global Variables by blssu
in thread Embedded Perl Global Variables by Anonymous Monk

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.