My bad, sorry.  caller() worked just fine..I wasn't using it correctly in my
initial attempt.

Thanks for the advice,

Kirk
[EMAIL PROTECTED]
http://www.scriptdoggie.com


----- Original Message -----
From: "Jenda Krynicky" <[EMAIL PROTECTED]>
To: "Kirk" <[EMAIL PROTECTED]>;
<[EMAIL PROTECTED]>
Sent: Friday, June 07, 2002 12:26 PM
Subject: Re: [Perl-unix-users] Display parent program (.pl) from a package
(.pm)?


> From: "Kirk" <[EMAIL PROTECTED]>
>
> > Not exactly.  There are several dozen parent programs that call a
> > single child program (a global DBI handle).  I've just discovered that
> > many of the calling parent programs are using "require".  So what I
> > have is:
> >
> > #!/usr/local/bin/perl
> > # filename: parent.pl
> > require child.pl
> > ...
> > ...
> >
> > And in child.pl, I need to determine the name of the parent program
> > which called it.  A simple $0 wont due and "caller" doesn't apply.
> > Any other suggestions?
>
> Could you try to tell us
> 1) What is a process?
> 2) What is a program?
> 3) What is a library?
>
> Do you have a process that is running "in the background" serving
> as a "global DBH handle" and several other processes that connect
> to that process using pipes or shared memory or something else?
> I doubt it. And I do not see any reason why would you want to do
> that.
>
> I am sure (99.9%) you merely have a LIBRARY (child.pl) that's is
> required IN several programs. The code in child.pl then runs INSIDE
> the process that gets created when you start any of the programs
> and if it looks at $0 it'll see the name of the MAIN file of the
> program.
>
> Eg. if you have
>
> #child.pl
> print "Program name/path: $0\n";
> 1;
>
> #parent1.pl
> require "child.pl";
> print "END process 1\n";
>
> #parent2.pl
> require "child.pl";
> print "END process 2\n";
>
> and run
>
> > perl parent1.pl
> you'll get
> Program name/path: parent1.pl
> END process 1
> and for
> > perl parent2.pl
> Program name/path: parent2.pl
> END process 2
>
> The child.pl would only ever print
> Program name/path: child.pl
> if you run it directly, NEVER if you only "require" it.
> > perl child.pl
>
>
>
> So back to what you wrote:
>
> # filename: parent.pl
> > require child.pl
> > ...
> > ...
> >
> > And in child.pl, I need to determine the name of the parent
> > program which called it.
>
> child.pl is NOT a program, and it was NOT called. require() doesn't
> "call" programs, it includes libraries.
>
> Jenda
>
>
> =========== [EMAIL PROTECTED] == http://Jenda.Krynicky.cz ==========
> There is a reason for living. There must be. I've seen it somewhere.
> It's just that in the mess on my table ... and in my brain
> I can't find it.
> --- me

_______________________________________________
Perl-Unix-Users mailing list
[EMAIL PROTECTED]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to