|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/400 21 Sep 2004 20:00:46 To : Konstantin Tokar Subject : Re: Как узнать имя переменной, на которую есть ссылка? -------------------------------------------------------------------------------- Konstantin Tokar -> Andrey Sapozhnikov @ Tue, 21 Sep 2004 15:31:03 +0000 (UTC): >>> Как узнать имя переменной, на которую есть ссылка? Hапример, я пишу >>> >>> sub print_dump{ >>> ...... >>> } >>> >>> my $a = 'текст'; >>> print_dump($a); >>> >>> и хочу, чтобы print_dump($a) выдавала дамп в виде >>> $a = 'текст' >> Корректно - никак. >> >>> Теоретически я представляю, как это можно сделать, но, возможно, это уже >>> сделано? >> Очень любопытно... ну и как же? Пусть "теоретически"? >> KT> Hу, мы ведь знаем, из какой строки произошёл вызов print_dump(), и KT> можем посмотреть, какие переменные были переданы. Это сработает KT> даже для анонимных. Можно и ещё что-нибудь придумать, наверняка KT> можно сравнить адреса в @_ с адресами всех доступных из вызывающей KT> процедуры. Hет, если ввести некоторые ограничения на употребление этой штуки, то можно пробовать... Ограничения включают: доступность файла (т.е. с -e не работает), вызов функции по имени, а не через ссылку, отсутствие в этой строке второго ее вызова. То бишь банального print_dump($a); print_dump($b) оно не переживет. -- Artem Chuprina <ran@ran.pp.ru> FIDO: 2:5020/122.256 --- ifmail v.2.15dev5.3 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор Архивное /ru.perl/12192a5f99545.html, оценка из 5, голосов 10
|