http://qs1969.pair.com?node_id=1216609


in reply to lying about program name

FWIW

You didn't close your use statement on line 2 of bar

#!/usr/bin/perl -w use strict; __________^ system { './foo' } 'bar', @ARGV;

Which fixed it for me. :-)

EDIT:
Didn't -w scream at you?

Evil is good, for without it, Good would have no value
λɐp ʇɑəɹ⅁ ɐ əʌɐɥ puɐ ʻꜱdləɥ ꜱᴉɥʇ ədoH

Replies are listed 'Best First'.
Re^2: lying about program name
by japl (Initiate) on Jun 14, 2018 at 07:10 UTC
    that was probably due to my editing the post to remove some unwanted noise (ie. hostname, username etc.) >> Which fixed it for me. :-) you meant it actually printed out "I am bar (1 2 3)" as expected? (ie. $0 gets 'bar' instead of './foo') . what perl version did you use? i've tried this on all 5.16, 5.18 and 5.22 ... all the same. thanks for looking at it.
      Having only added the semicolon to the bar script. My copies were exactly as you posted them.

      Just for fun. Here's the output from my session:

      devel# ./bar Can't exec "./foo": No such file or directory at ./bar line 3. Unknown 'strict' tag(s) '-1' at ./bar line 3. BEGIN failed--compilation aborted at ./bar line 3. devel#
      Ahh, sure enough. No semicolon on line 2 -- gotta love that -w :-)
      devel# ./bar I am ./foo ()
      Looks good. Lets try it as intended
      devel# ./bar 123 I am ./foo (123) devel#
      I think I can safely reply now. :-)

      Evil is good, for without it, Good would have no value
      λɐp ʇɑəɹ⅁ ɐ əʌɐɥ puɐ ʻꜱdləɥ ꜱᴉɥʇ ədoH