Мне нужен сценарий Perl, чтобы порождать себя с произвольным именем, то есть, чтобы остальная часть ОС увидела его, например, как. "Aaa.exe". У меня было впечатление, что это возможно сделать в Perl, но теперь я не уверен.
Я использую 32-разрядную сборку Strawberry Perl 5.14 для Windows 7 amd64.
Вот что я пробовал и не работает:
#!perl -w
# spawnself.pl
if ($ARGV[0]) {
my $name = ($ARGV[0]);
system {"perl"} $name, $0;
} else {
print "running as $^X, PID is $$\n";
print "press Enter to quit...\n";
my $trash = <>;
}
Я написал это на основе примера exec perldoc page (ссылки на системные страницы там): exec {'/bin/csh'} '-sh';
, где, IIUC, цель состоит в том, чтобы заставить / bin / csh думать, что это "-sh" хотя я не уверен, что это также должно сделать csh похожим на "-sh" снаружи. Кроме того, это пример UNIX, а я на Windows.
Я хотел бы иметь скрипт, который запускается (из командной строки) как spawnself.pl aaa.exe
, сам порождает, печатает running as aaa.exe, PID is 1234
, а просмотр диспетчера задач показывает эту программу как "aaa.exe". Однако мой фрагмент, как и весь остальной мир, все еще видит себя как «perl.exe»:
- в диспетчере задач, процесс 1234 по-прежнему называется "perl.exe", поэтому он печатает
running as C:\path\to\my\perl.exe, PID is 1234
Что я делаю не так? Кто-нибудь может пролить свет на это?