El 27/8/21 a las 18:55, Keith Thompson escribió:
>> If you have some helpful hints you could post whatsover because
>> previously you post a false clue to patch.
> False clue? What are you talking about?
$0 Contains the name of the program being executed.
On some (but not all) operating systems assigning to $0
modifies the argument area that the "ps" program sees. On some
platforms you may have to use special "ps" options or a
different "ps" to see the changes. Modifying the $0 is
more useful as a way of indicating the current program state than it is
for hiding the program you're running.
Note that there are platform-specific limitations on the
maximum length of $0. In the most extreme case it may be limited to the
space occupied by the original $0.
In some platforms there may be arbitrary amount of
padding, for example space characters, after the modified name as shown
by "ps". In some platforms this padding may extend all the
way to the original length of the argument area, no
matter what you do (this is the case for example with Linux 2.2).
Note for BSD users: setting $0 does not completely
remove "perl" from the ps(1) output. For example, setting $0 to
"foobar" may result in "perl: foobar (perl)" (whether both the
"perl: " prefix and the " (perl)" suffix are shown
depends on your exact BSD variant and version). This is an operating
system feature, Perl cannot help it.
In multithreaded scripts Perl coordinates the threads so
that any thread may modify its copy of the $0 and the change becomes
visible to ps(1) (assuming the operating system plays
along). Note that the view of $0 the other threads have
will not change since they have their own copies of it.
If the program has been given to perl via the switches
"-e" or "-E", $0 will contain the string "-e".
On Linux as of perl v5.14.0 the legacy process name will
be set with prctl(2), in addition to altering the POSIX name via
"argv" as perl has done since version 4.000. Now system
utilities that read the legacy process name such as ps,
top and killall will recognize the name you set when assigning to $0.
The string you supply will be cut off at 16 bytes, this
is a limitation imposed by Linux.
Mnemonic: same as sh and ksh.
So, open IN, '<', $0 or die $! # will no fail
perl -E 'say "Error: Insert system disk"'