in reply to Find name of calling script?

Surely Perl knows this, since it may need to return there when the called script finishes.

For do, require, eval and sub calls, everything happens within Perl, so yes.

For the others, no. When Perl exits, the process simply stops doing anything. It doesn't control to the process that spawned Perl since it never stopped. Creating a child process is like creating a child person. You end up with two entities that operate independently. You can't return because the parent moved on.

How do I find the name of the script which called my current script, in Perl?

For calls within the Perl interpreter, (e.g. for do and require), Perl provides a wealth of information via caller.

For information about the parent process, you'll need an OS-dependent solution. There may be platform-independent and/or platform dependent modules that does this, but I haven't encountered them (or looked for them). Someone else will have to answer this part of the question.