Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив в модуле 
:(
    Опции темы
Гость_Valery
Дата 9.6.2004, 18:00 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Передаю в подпрограмму, которая находится подключаемом модуле,
переменную вида 'abcdefgh', т. е. строка символов, далее хочу посимвольно
разделить её в массив: @array = split ( '', $var ). Инициализации массива
НЕ ПРОИСХОДИТ! Когда подпрограмма в том же файле, то всё работает...
Что неправильно???

  Вверх
HalkaR
Дата 9.6.2004, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



А сам то перменная передается?

Можно исходники поглядеть?
PM MAIL   Вверх
g-valery
Дата 10.6.2004, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.6.2004

Репутация: нет
Всего: нет



Сама переменная передается. Да и если бы не передавалась, массив, хотя бы пустой,
должен быть? А про исходники - я ж написал: @array = split ( '', $var ) $var='абвгдежз' и т.д.,
то есть строка символов, в отладчике смотрел, переменная присутствует
PM MAIL   Вверх
korob2001
Дата 11.6.2004, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата

@array = split ( '', $var ) $var='абвгдежз'

Это не исходник. На такой исходник могу дать только такой ответ:
Код

$var = 'абвгдежз';
@array = split ( '', $var );

Так эта строка будет выглядеть более правильно.

Если проблема так и осталась не решённой, давай исходник. Это форум программистов, а не ясновидещих.

Удачи.



--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
g-valery
Дата 11.6.2004, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.6.2004

Репутация: нет
Всего: нет



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 - передаваемая строка символов
PM MAIL   Вверх
GoodBoy
Дата 11.6.2004, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Главный джедай
****


Профиль
Группа: Модератор
Сообщений: 3886
Регистрация: 8.1.2003
Где: КМВ

Репутация: 2
Всего: 83



Цитата
В $text_koi - передаваемая строка символов

А где ты ее в процедуру передаешь??????????

сделай так:
Код
sub koi2unicode {
   my $text_koi = shift;
...

и вызывай процедуру так:

Код
my $ret = &koi2unicode($str);



--------------------
Чем дальше в лес, тем толще партизаны...

Цитата(igorold @  1.5.2016,  17:40 Найти цитируемый пост)
Индейцы не обратили внимания на поток беженцев из Европы… Теперь они живут в резервациях. 
PM MAIL   Вверх
g-valery
Дата 15.6.2004, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 9.6.2004

Репутация: нет
Всего: нет



Типа умных больше нету...smile.gif

На:

сделай так:
sub koi2unicode {
my $text_koi = shift;
...
и вызывай процедуру так:
my $ret = &koi2unicode($str);

А мне казалось, из модуля надо вызывать
$ret = MODULE->koi2unicode($str); smile.gif))

Переменная ПЕРЕДАЕТСЯ!!! Что к ней привязялись? Повторяю еще раз вопрос:
ПОЧЕМУ не создается массив (хотя бы пустой)?

PM MAIL   Вверх
Guest
Дата 15.6.2004, 19:11 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата

А мне казалось, из модуля надо вызывать
$ret = MODULE->koi2unicode($str);

Так вызывают метод класса.
Если у тебя нормальный модуль, то он по идее должен экспорировать свои функции в пространство имён main. Goodboy всё правильно написал.

Если же у тебя класс, попробуй написать его так:
Назовём его: MyClass.pm
Код

package MyClass;

use strict;

# Создаём конструктор класса
sub new {
   my $check = shift;
   my $class = ref( $check ) || $check;
   my $self  = {};
   bless( $self, $class );
   return $self;
}

# Твой метод
sub koi2unicode {
   my $text_koi = @_[1];
   my %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' );
   my $out='';
   my @a = split('',$text_koi);
  foreach (@a) {
       if ( exists( $decode{ $_ } ) ) {
               $_=$decode{ $_ };
               $_="$#x04" . $_ . ";";
               $out=$out.$_;
       }
  }
return $out;
}

1; # Истенное значение


Сохрани его в каталоге /cgi-bin/test/MyClass

Теперь давай попробуем вызвать твой метод koi2unicode:
Втомже каталоге создай файл с таким содержимым:
Код

#!/usr/bin/perl -w
use strict;
use lib qw(.);
use MyClass;
my $unicode = new MyClass;
my $string= 'Привет!';
my $encoding = $unicode->koi2unicode( $string );
print $encoding, "\n";

Если где-то ошибка то дай знать, просто не тестировал, времени нет.
Удачи.
  Вверх
korob2001
Дата 15.6.2004, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Ой, забыл войти в систему. Постинг выше, мой.

Это сообщение отредактировал(а) korob2001 - 15.6.2004, 20:50


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0495 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.