Задали тут мне задачку разрешить :)нужно получить текст запущенного скрипта без использования функций открытия файла как перловых так и шеловских.
я так понимаю что это можно вытащить либо через память, либо через внутренние переменные интерпретатора.
[sector119@mars test]$ cat test.pl
#!/usr/bin/perlundef $/; print <>;
[sector119@mars test]$ ./test.pl test.pl
#!/usr/bin/perlundef $/; print <>;
[sector119@mars test]$
>[sector119@mars test]$ cat test.pl
>#!/usr/bin/perl
>
>undef $/; print <>;
>[sector119@mars test]$ ./test.pl test.pl
>#!/usr/bin/perl
>
>undef $/; print <>;
>[sector119@mars test]$немного не то :)
тут вариант типа:
print<<''x2,"\n"
print<<''x2,"\n"
>немного не то :)почему не то? делает ведь то что надо! :)
>тут вариант типа:
>print<<''x2,"\n"
>print<<''x2,"\n"не понял :) что ты имел ввиду под этим кодом :)) можно розжевать? :)
>>немного не то :)
>
>почему не то? делает ведь то что надо! :)
логично :)
>
>>тут вариант типа:
>>print<<''x2,"\n"
>>print<<''x2,"\n"
>
>не понял :) что ты имел ввиду под этим кодом :)) можно
>розжевать? :)
если честно то я сам не до конца понимаю...
этот вопрос мне задали на интервью по поводу новой работы.
текст задачи я сформулировал выше
цельный день ковырялся и понял для себя одну простую вещь
что такого без гемороя сделать нельзя
либо исходники перла переписывать, либо дамп памяти делать и байт-код разбирать
честно признался что не смог решить задачку
и вот ответ приветденный выше от задававшиххотя получаеться что сам-то код не выполняеться а просто выводить посредством оператора принт
вот пойди их и пойми :)))
в другом форум мне подсказали другое решение (я уже кое-где его применил)
perl -MO=Deparse "script.pl"
это уровень проверки синтакси с показам тела скриптано сама задачка меня чуть цепанула и я пока ковыряюсь дальше
знаю точно что из документированных внутренних переменных интерпритатора выдрать текст исполняемого скрипта нельзя, но нутром чувствую что какая-то лазейка есть
вот
помоему мой пример наймение гиморный и главное рабочий, при выполнении всех поставленных условий :) хотя может я так и не понял что конкретно они хотели :)
$the_script = '
print "I am the script :)";
exit 0;
';print "$the_script\n";
eval($the_script);
а так по идее нельзя полностью себя напечатать при выполнении, используя только строку типа #!/usr/bin/perl в начале и не использую функций открытия файла...
это как барон Мюнхаузен должен себя за волосы вытащить....
>а так по идее нельзя полностью себя напечатать при выполнении, используя только
>строку типа #!/usr/bin/perl в начале и не использую функций открытия файла...
>
>это как барон Мюнхаузен должен себя за волосы вытащить....вот как барон Мюнхаузен вытягивает себя за мошонку :)))
[sector119@mars test]$ cat test.pl
#!/usr/bin/perl
seek DATA, 0, SEEK_SET;
print while <DATA>;
__DATA__[sector119@mars test]$ test.pl
#!/usr/bin/perl
seek DATA, 0, SEEK_SET;
print while <DATA>;
__DATA__
браво барон, ваша машонка достойна восхищения :)
>браво барон, ваша машонка достойна восхищения :)простите, что влезаю, просто заметка на полях
нахер такую работу где задают такие задачки на конкурсеим шашечки или ехать?
>простите, что влезаю, просто заметка на полях
>нахер такую работу где задают такие задачки на конкурсе
>
>им шашечки или ехать?
Вы знаете я тоже так решил :)
Хотя некоторые ответу были потешными