| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > устанолены ли параметры |
| Автор: scion 15.6.2009, 15:16 |
| в функцию предаются переменные: $variable1, $variable2 ... etc как в функции проверить установлено ли им в программе значение? например: $one=1 передаём в функцию: check($one,$two...) { ... } переменная $two не установлена. надо что бы функция ругнулась. |
| Автор: ginnie 15.6.2009, 15:22 | ||
| scion, если я верно понимаю словосочетание "установлено значение", то решить Вашу задачу невозможно, т.к. неинициализированная переменная имеет значение undef, которое можно присвоить переменной в любое удобное время. Пример
|
| Автор: scion 15.6.2009, 15:40 | ||||
fnx за undef... совсем забыл... т. е. если я правильно понял то так: !/usr/bin/perl sub CheckVaribles { foreach $_ (@_){ $i++; if ($_ eq undef) { print "\n: ",$i," not assigned\n"; } } } $i=0; $some_variable="test"; ##$some_variable2="teste"; $some_variable3="0"; CheckVaribles($some_variable,$some_variable2,$some_variable3); Это нормальный способ. или есть решения лучше? Добавлено через 10 минут и 54 секунды sub CheckVaribles { как мне от сюда вытащить не значение передаваемых параметров!!! а имя переменных? которые содержат передаваемые параметры т.е. $some_variable или $some_variable2 } CheckVaribles($some_variable,$some_variable2,$some_variable3); |
| Автор: scion 15.6.2009, 16:41 |
| я конечно придумал... но останусь ли я жив после того как это кто-нибудь увидит.... я придумал засунуть все имена переменных в масив и передать в функцию в качестве нулевого параметра, а значения начиная с первого и внутни функции из распределить... в узнать какая из них undef и вывести её... |
| Автор: KSURi 15.6.2009, 16:51 | ||
| eq undef - неверное сравнение, для этого есть функция defined. $_ можно явно не указывать в циклах, на то она переменная по-умолчанию.
Имя переданной переменной вытащить не получится, только если не передавать аргументы в виде хэша или ссылки на него (использовать ключ в кач-ве имени переменной). |
| Автор: scion 15.6.2009, 17:44 |
| народ говори что как-то можно получить аргументы функции как строку... |
| Автор: ginnie 15.6.2009, 18:09 |
| scion, как вариант, можно попробовать использовать модуль http://search.cpan.org/~nuffin/Devel-ArgNames-0.03/lib/Devel/ArgNames.pm. |
| Автор: scion 15.6.2009, 19:18 | ||
спасибо. |
| Автор: scion 15.6.2009, 20:04 |
| кто-нибудь использовал Devel::ArgNames ??? а то он у меня матерится... =( Not nested deeply enough at /usr/local/share/perl/5.10.0/Devel/ArgNames.pm line 19 |
| Автор: scion 15.6.2009, 20:20 | ||
всё решил. всем спасибо. вопросов по теме больше нет. |