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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Люблю порядочек... 
:(
    Опции темы
_eXpLoReR_
  Дата 24.6.2004, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Приветствую, народ!
Вопрос таков.
У меня есть массив, в котором лежит несколько значений.

Сам массив (@massiv):

Цитата

1|Автосервис|
2|Ремонт компьютеров|
3|Видеосъемка|
4|Курсы дизайнеров|

и т.д.

Мне его нужно отсортировать по русскому алфавиту, т.е. от А до Я по первым словам.
Подскажите, пожалуйста, как это сделать.

Заранее благодарен, eXp...





PM MAIL   Вверх
korob2001
Дата 24.6.2004, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Попробуй так:
Код

#!/usr/bin/perl -w
use strict;
my @massiv = ('1|Автосервис|',
              '2|Ремонт компьютеров|',
              '3|Видеосъемка|',
              '4|Курсы дизайнеров|');
@massiv = sort { sorted( $a, $b ) } @massiv;

sub sorted {
   my $a = shift;
   my $b = shift;
   $a =~ s/\d+\|(.+)\|/$1/;
   $b =~ s/\d+\|(.+)\|/$1/;
   return( $a cmp $b ); # Если нужен обратный порядок, поменяй местами переменные $a и $b
}

print join("\n", @massiv);

Если, конечно, я тебя правильно понял.

Удачи.

Это сообщение отредактировал(а) korob2001 - 24.6.2004, 22:21


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


Шустрый
*


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

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



Спасибо. Попробую. А ты мог бы обьяснить sub sorted?
PM MAIL   Вверх
korob2001
Дата 25.6.2004, 02:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

А ты мог бы обьяснить sub sorted?


Код

1: sub sorted {
2:    my $a = shift;
3:    my $b = shift;
4:    $a =~ s/\d+\|(.+)\|/$1/;
5:    $b =~ s/\d+\|(.+)\|/$1/;
6:    return( $a cmp $b );
7: }

Для простоты я пронумеровал строки.

1. Начало подпрограммы sorted
2. Создаём локальную переменную $a и при помощи shift сохраняем в неё первый параметр.
3. Создаём локальную переменную $b и при помощи shift сохраняем в неё второй параметр.
можно было записать строки 2 и 3 в одной строке, вот так: my($a, $b) = @_;
4. Из переменной $a выуживаем то что находится между символами || и заменяем значение переменной. Например переменая $a = '1|Автосервис|', то после этой строки она будет выглядеть примерно так: $a = 'Автосервис'.
5. Тоже, только с переменной $b
6. Сравниваем строки и возвращаем результат.
7. Конец подпрограммы sorted.



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


Шустрый
*


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

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



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


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

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


 




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


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

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