Forum Webscript.Ru
Программирование => Perl => Тема начата: kaska от 27 Ноября 2005, 20:31:13
-
Здравствуйте, второй день сижу с женой и не могу придумать ;) Видимо жена отвлекает...
Есть переменная $name = "Павлик Вовик Костик Женечка Павлик Костя Павлик"
загвоздка: необходимо посчитать повторения и пересортировать переменную по кол-ву повторений через запятую. Т.е. в переменной 3 (три) раза втречается "Павлик", 2 (два) раза встречается "Костик", 1 (один) - "Женечка", 1 (один) - "Вовик". Таким образом переменная $name преобразуется в $sort_name = "Павлик,Костик,Вовик,Женечка".
Кто-нибудь сможет помочь?
-
kaska
Не ленись, это достаточно простая задача... которую можно решить изучив такие лольские книги как "Перл за 24 часа"
Почитай про: splite, Циклы, Массивы, Хеши....
-
$name = "Павлик Вовик Костик Женечка Павлик Костя Павлик";
my %hash = map { $_ => $hash{$_}++ } split(/\\s/,$name);
my $sort_name = join (\',\', sort {$hash{$b} <=> $hash{$a}} keys %hash);
-
Спасибо - жена в восторге :D
-
Итересно, а в интернете где-нить про Хеш можно почитать? Просто возникла потребность ограничить вывод не всех имен, а только 3 (трёх) самых-самых ;) $sort_name = "Павлик,Костик,Вовик";
-
http://perldoc.perl.org
-
Я так понимаю, что нужно всё сделать через цикл, но как в цикл помещать имена (или ключи) из хэша по отдельности?
т.е. я делаю
$i=1;
while ($i < 3) {
...
}
а что в цикле?
-
А может быть это через foreach сделать? :insane:
-
Купите книжку, хоть даже "перл за 24 часа".