| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Массив в модуле |
| Автор: Гость_Valery 9.6.2004, 18:00 |
| Передаю в подпрограмму, которая находится подключаемом модуле, переменную вида 'abcdefgh', т. е. строка символов, далее хочу посимвольно разделить её в массив: @array = split ( '', $var ). Инициализации массива НЕ ПРОИСХОДИТ! Когда подпрограмма в том же файле, то всё работает... Что неправильно??? |
| Автор: HalkaR 9.6.2004, 21:26 |
| А сам то перменная передается? Можно исходники поглядеть? |
| Автор: g-valery 10.6.2004, 08:15 |
| Сама переменная передается. Да и если бы не передавалась, массив, хотя бы пустой, должен быть? А про исходники - я ж написал: @array = split ( '', $var ) $var='абвгдежз' и т.д., то есть строка символов, в отладчике смотрел, переменная присутствует |
| Автор: korob2001 11.6.2004, 01:47 | ||||
Это не исходник. На такой исходник могу дать только такой ответ:
Так эта строка будет выглядеть более правильно. Если проблема так и осталась не решённой, давай исходник. Это форум программистов, а не ясновидещих. Удачи. |
| Автор: g-valery 11.6.2004, 11:27 |
| sub koi2unicode { %decode=( 'А'=>'10','Б'=>'11','В'=>'12','Г'=>'13','Д'=>'14','Е'=>'15','Ж'=>'16','З'=>'17', 'И'=>'18','Й'=>'19','К'=>'1a','Л'=>'1b','М'=>'1c','Н'=>'1d','О'=>'1e','П'=>'1f', 'Р'=>'20','С'=>'21','Т'=>'22','У'=>'23','Ф'=>'24','Х'=>'25','Ц'=>'26','Ч'=>'27', 'Ш'=>'28','Щ'=>'29','Ъ'=>'2a','Ы'=>'2b','Ь'=>'2c','Э'=>'2d','Ю'=>'2e','Я'=>'2f', 'Ё'=>'01', 'а'=>'30','б'=>'31','в'=>'32','г'=>'33','д'=>'34','е'=>'35','ж'=>'36','з'=>'37', 'и'=>'38','й'=>'39','к'=>'3a','л'=>'3b','м'=>'3c','н'=>'3d','о'=>'3e','п'=>'3f', 'р'=>'40','с'=>'41','т'=>'42','у'=>'43','ф'=>'44','х'=>'45','ц'=>'46','ч'=>'47', 'ш'=>'48','щ'=>'49','ъ'=>'4a','ы'=>'4b','ь'=>'4c','э'=>'4d','ю'=>'4e','я'=>'4f', 'ё'=>'51'); $out=''; @a = split('',$text_koi); foreach (@a) { if (exists($decode{$_})) { $_=$decode{$_}; $_="$#x04".$_.";"; $out=$out.$_; } } return $out; } В $text_koi - передаваемая строка символов |
| Автор: GoodBoy 11.6.2004, 11:46 | ||||||
А где ты ее в процедуру передаешь?????????? сделай так:
и вызывай процедуру так:
|
| Автор: g-valery 15.6.2004, 17:08 |
| Типа умных больше нету... На: сделай так: sub koi2unicode { my $text_koi = shift; ... и вызывай процедуру так: my $ret = &koi2unicode($str); А мне казалось, из модуля надо вызывать $ret = MODULE->koi2unicode($str); Переменная ПЕРЕДАЕТСЯ!!! Что к ней привязялись? Повторяю еще раз вопрос: ПОЧЕМУ не создается массив (хотя бы пустой)? |
| Автор: Guest 15.6.2004, 19:11 | ||||||
Так вызывают метод класса. Если у тебя нормальный модуль, то он по идее должен экспорировать свои функции в пространство имён main. Goodboy всё правильно написал. Если же у тебя класс, попробуй написать его так: Назовём его: MyClass.pm
Сохрани его в каталоге /cgi-bin/test/MyClass Теперь давай попробуем вызвать твой метод koi2unicode: Втомже каталоге создай файл с таким содержимым:
Если где-то ошибка то дай знать, просто не тестировал, времени нет. Удачи. |
| Автор: korob2001 15.6.2004, 20:49 |
| Ой, забыл войти в систему. Постинг выше, мой. |