in reply to Getting a script's original command line

Hi, found a relevant snippet on StackOverflow https://stackoverflow.com/questions/6156742/how-can-i-capture-the-complete-commandline-in-perl .

There's a lot of extra verbiage there, but the key part was something like this:

my $script_command = $0; foreach (@ARGV) { $script_command .= /\s/ ? " \'" . $_ . "\'" : " " . $_; }

It seems to do the job, at least for what I needed. Perhaps this will help someone else...

Replies are listed 'Best First'.
Re^2: Getting a script's original command line -- Devel::PL_origargv
by Discipulus (Canon) on Sep 06, 2018 at 07:06 UTC
    Hello NorthernDean and welcome to the monastery and to the wonderful world of Perl!

    thanks for your hint, but as merlyn said 18 years ago (ouch!) and as YourMother repeated it is not so reliable. The fact is that perl does not provide a methodo to inspect the original argument list and in this list you must consider also eventual module imported and perl switch.

    Our esteemed monk tobyink tried to mind this gap with a little XS module Devel::PL_origargv which you may find useful:

    # be aware of windows double quotes! perl -MDevel::PL_origargv -MData::Dumper -e "print Dumper [ Devel::PL_ +origargv->get ]" perlmonks 42 perl $VAR1 = [ 'perl', '-MDevel::PL_origargv', '-MData::Dumper', '-e', 'print Dumper [ Devel::PL_origargv->get ]', 'perlmonks', '42', 'perl' ];

    As you can see also the oneliner is included in arguments: infact is an argument passed to perl -e and the same pass if you run a separate program: the filename is included in argument passed to perl.

    L*

    There are no rules, there are no thumbs..
    Reinvent the wheel, then learn The Wheel; may be one day you reinvent one of THE WHEELS.
Re^2: Getting a script's original command line
by Your Mother (Archbishop) on Sep 06, 2018 at 04:34 UTC