Does perl have something analogous to the shell's source?

Not for shell code, as shell code needs to be interpreted by a shell (likewise, a shell cannot run Perl code).

As for "the shell which the Perl script is running in", Perl is started from a shell, but it's a separate subprocess, so strictyl speaking, the Perl script is not running "in" a shell.  This means the same child-parent restrictions apply, i.e. the Perl script (nor any further child processes started from it) cannot set the environment of its parent shell.

Update: maybe this clarifies it somewhat. When you run something from the command line, for example

$ perl -e 'system "ps Tf ; sleep 1"'

you see child-parent relationships as follows (indenting means "child of")

PID TTY STAT TIME COMMAND 29353 pts/7 S 0:00 bash # th +e initial interactive command shell 29388 pts/7 S+ 0:00 \_ perl -e system "ps Tf ; sleep 1" # yo +ur Perl script 29389 pts/7 S+ 0:00 \_ sh -c ps Tf ; sleep 1 # a +shell started by system() 29390 pts/7 R+ 0:00 \_ ps Tf # a +subprocess run by the shell

All those are separate processes created via fork/exec, and no child is able to manipulate the environment of its respective parent process. But it does inherit the environment of its parent.


In reply to Re^5: system ( "source $script" ) by Anonyrnous Monk
in thread system ( "source $script" ) by ajwood

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.