URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 898
[ Назад ]

Исходное сообщение
"интересная задача для любителей Perl"

Отправлено gelezny , 13-Авг-02 16:52 
Задали тут мне задачку разрешить :)

нужно получить текст запущенного скрипта без использования функций открытия файла как перловых так и шеловских.

я так понимаю что это можно вытащить либо через память, либо через внутренние переменные интерпретатора.


Содержание

Сообщения в этом обсуждении
"RE: интересная задача для любителей Perl"
Отправлено sector119 , 15-Авг-02 16:53 
[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]$


"RE: интересная задача для любителей Perl"
Отправлено gelezny , 15-Авг-02 17:01 
>[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"


"RE: интересная задача для любителей Perl"
Отправлено sector119 , 15-Авг-02 17:23 
>немного не то :)

почему не то? делает ведь то что надо! :)

>тут вариант типа:
>print<<''x2,"\n"
>print<<''x2,"\n"

не понял :) что ты имел ввиду под этим кодом :)) можно розжевать? :)


"RE: интересная задача для любителей Perl"
Отправлено gelezny , 15-Авг-02 17:40 
>>немного не то :)
>
>почему не то? делает ведь то что надо! :)
логично :)
>
>>тут вариант типа:
>>print<<''x2,"\n"
>>print<<''x2,"\n"
>
>не понял :) что ты имел ввиду под этим кодом :)) можно
>розжевать? :)
если честно то я сам не до конца понимаю...
этот вопрос мне задали на интервью по поводу новой работы.
текст задачи я сформулировал выше
цельный день ковырялся и понял для себя одну простую вещь
что такого без гемороя сделать нельзя
либо исходники перла переписывать, либо дамп памяти делать и байт-код разбирать
честно признался что не смог решить задачку
и вот ответ приветденный выше от задававших

хотя получаеться что сам-то код не выполняеться а просто выводить посредством оператора принт
вот пойди их и пойми :)))
в другом форум мне подсказали другое решение (я уже кое-где его применил)
perl -MO=Deparse "script.pl"
это уровень проверки синтакси с показам тела скрипта

но сама задачка меня чуть цепанула и я пока ковыряюсь дальше

знаю точно что из документированных внутренних переменных интерпритатора выдрать текст исполняемого скрипта нельзя, но нутром чувствую что какая-то лазейка есть

вот


"RE: интересная задача для любителей Perl"
Отправлено sector119 , 15-Авг-02 17:54 
помоему мой пример наймение гиморный и главное рабочий, при выполнении всех поставленных условий :) хотя может я так и не понял что конкретно они хотели :)

"RE: интересная задача для любителей Perl"
Отправлено 1 , 22-Авг-02 12:43 
$the_script = '
print "I am the script :)";
exit 0;
';

print "$the_script\n";
eval($the_script);


"RE: интересная задача для любителей Perl"
Отправлено 1 , 23-Авг-02 12:56 
а так по идее нельзя полностью себя напечатать при выполнении, используя только строку типа #!/usr/bin/perl в начале и не использую функций открытия файла...
это как барон Мюнхаузен должен себя за волосы вытащить....

"RE: интересная задача для любителей Perl"
Отправлено sector119 , 23-Авг-02 17:49 
>а так по идее нельзя полностью себя напечатать при выполнении, используя только
>строку типа #!/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__


"RE: интересная задача для любителей Perl"
Отправлено 1 , 25-Авг-02 13:21 
браво барон, ваша машонка достойна восхищения :)

"RE: интересная задача для любителей Perl"
Отправлено gvf , 27-Авг-02 20:22 
>браво барон, ваша машонка достойна восхищения :)

простите, что влезаю, просто заметка на полях
нахер такую работу где задают такие задачки на конкурсе

им шашечки или ехать?



"RE: интересная задача для любителей Perl"
Отправлено gelezny , 28-Авг-02 10:49 
>простите, что влезаю, просто заметка на полях
>нахер такую работу где задают такие задачки на конкурсе
>
>им шашечки или ехать?
Вы знаете я тоже так решил :)
Хотя некоторые ответу были потешными