http://www.perlmonks.org?node_id=575411


in reply to How to determine the path to the Perl binary that executed your program?

See $^X in perlvar.

Cheers, Flo

  • Comment on Re: How to determine the path to the Perl binary that executed your program?

Replies are listed 'Best First'.
Re^2: How to determine the path to the Perl binary that executed your program?
by Anonymous Monk on Sep 28, 2006 at 19:40 UTC
    That gets its value from the config file. So that would fail for the same reasons given above for using Config.pm. After compilation, the Perl binary could be moved or renamed.

      Actually, it doesn't.

      $ perl -le'print $^X' /usr/bin/perl $ cp /usr/bin/perl ~/tmp/ $ ./tmp/perl -le'print $^X' /home/rafl/tmp/perl

      Cheers, Flo

        according to perldoc perlvar,
        Depending on the host operating system, the value of $^X may be a relative or absolute pathname of the perl program file, or may be the string used to invoke perl but not the pathname of the perl program file.
        and indeed,
        osx% perl -le'print $^X' perl
      No, $^X comes from C's argv[0]. If perl was in the path, then it may just be "perl", in which case File::Which should track down the correct version. Or it could be a relative path, which can be resolved to a full path.