in reply to Who called Perl?

Thanks to you all monks, named or unnamed ones.
I putted the pieces togheter and this was the result (ugly code I know, the command parsing over other things):
#!perl use strict; use warnings; use if ($^O eq 'MSWin32'), 'Win32::Getppid'; my $parent; my $invoker; BEGIN{ if ($^O eq 'MSWin32') { $parent = getppid; open my $cmd,"tasklist /nh /FI \"PID eq $parent\" |" or die; while (<$cmd>){ chomp; next if /^$/;# yes it outputs a leading empty line.. $invoker = $1 if /^([\w\d\.]+)\W/; } } else { $parent = getppid; open my $cmd,"ps -p $parent|" or die; while (<$cmd>){ chomp; next if /^[\sA-Z]+$/;# get rid of heaader: freebsd does no +t support no header output $invoker = $1 if /\s([\w\d\.]+)$/; } } } print "Perl (PID $$) was invoked from PID $parent ($invoker)\n";
It outputs the correct thing in 3 different test cases:
cmd.exe>perl who_called_Perl.pl Perl (PID 17400) was invoked from PID 10576 (cmd.exe) powershell> perl.exe who_called_Perl.pl Perl (PID 18212) was invoked from PID 11272 (powershell.exe) bash$ perl who_called_perl.pl Perl (PID 73288) was invoked from PID 31994 (bash)

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.