![]() |
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| Quick SED вопрос | ВБМ | Shell программирование и сценарии | 2 | 11-09-2006 10:44 PM |
| Ok быстро вопрос | Corrail | Shell программирование и сценарии | 1 | 11-11-2005 01:49 PM |
| Быстрый Perl вопрос | jason_v | Shell программирование и сценарии | 7 | 11-26-2003 04:31 AM |
| Быстрый вопрос | catbad | UNIX для чайников Вопросы И Ответы | 7 | 03-25-2003 07:01 PM |
| Быстрый вопрос | Трейси Хант | UNIX для чайников Вопросы И Ответы | 3 | 02-20-2001 04:20 PM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
[B] Perl быстро сортировать вопрос [/ B]
Я сделал быстрый Google по этому поводу, но не смогли найти ответ, который я хочу.
Скажите, есть массив следующим образом: @ \u003d QW (CD1 A1 EF A2 Hij a12 b2 b4 B22); Я хочу, чтобы отсортировать массив в первом порядке: отсортировано @ \u003d QW (A1 a12 A2 b2 b22 B4 CD1 Hij EF); И второго порядка: @ \u003d отсортировано ямы (A1 A2 a12 b2 b4 b22 CD1 Hij EF); Есть ли способ сделать это в Perl без использования модулей? Большое спасибо! Последняя редакция zx1106; на 10-09-2008 01:44 PM.. |
|
||||
|
Считаете ли вы, функция сортировки модуля?
Код:
@sorted=sort(@A); |
|
||||
|
Спасибо! Она работает на первый заказ.
|
|
||||
|
А как насчет второго порядка:
КЯ (A1 A2 a12 b2 b4 b22 CD1 Hij EF); Спасибо! |
|
||||
|
Да, вы можете отсортировать со специальным правилом. Но что именно это правило для роде? Если вы не можете работать вне формальной спецификации в этом роде, никто не будет в состоянии сделать это "правильно".
Следующие дает тот же заказов, как вы сказали, но нет никакой гарантии, что она собирается дать вам "правильные" упорядочение (как можно было бы ожидать), для других значений ввода: Код:
use Data::Dumper;
@A = qw(cd1 a1 ef a2 hij a12 b2 b4 b22);
print Dumper([sort {
my ($_a, $_b);
for ([$a, \$_a], [$b, \$_b]) {
$_->[0] =~ /^(.+?)(\d*)$/;
${$_->[1]} = [$1, $2];
}
($$_a[0] cmp $$_b[0]) || ($$_a[1] <=> $$_b[1]);
} @A]);
|
|
||||
|
Второго порядка, которая, как представляется, первого рода альфа-то цифры:
Код:
my @A = qw(cd1 a1 ef a2 hij a12 b2 b4 b22);
my @sorted = map{$_->[2]}
sort{$a->[0] cmp $b->[0] || $a->[1] <=> $b->[1]}
map{/([a-z]*)(\d*)/;[$1,$2,$_]} @A;
print "$_\n" for @sorted;
|
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|