Зададим функцию weekOrder, определяющую порядок
Зададим функцию weekOrder, определяющую порядок сортировки
sub WeekOrder {
my %week=("Monday"=>0,
"Tuesday"=>1,
"Wednesday"=>2,
"Thursday"=>3,
"Friday"=>4,
"Saturday"=>5,
"Sunday"=>6) ; $week{$a}<=>$week{$b} };
Используя функцию sort () с заданным порядком сортировки
for $i (0..11) {
print "month # ", $1+1, "\n";
for $DayName (sort WeekOrder keys %{$months[$i]}) { print " $DayName @{$months[$i]{$DayName}}\n";
} • ' ' };
получим структурированный вывод календаря в виде, упорядоченном по месяцам и дням недели:
month f 1
Monday 3 10 17 24 31
Tuesday 4 11 18 25
Wednesday 5 12 19 26
Thursday 6 13 20 27
Friday 7 14 21 28
Saturday 1 8 15 22 29
Sunday 2 9 16 23 30
В качестве следующего примера построим на основе массива gmonths новую структуру, которую можно было бы назвать "хеш-массив хеш-массивов массивов", если бы такое название имело право на существование. В действительности, все просто. Речь идет о том, чтобы заменить в массиве @months числовые индексы ключами, совпадающими с названиями месяцев, и таким образом получить ассоциативный массив %months со сложной внутренней структурой (см. рис. 9.3).
Рис 9.3. Ассоциативный массив %months со сложной внутренней структурой
При построении хеш-массива %months воспользуемся вспомогательным хеш-массивом %OrderedMonths, который будем использовать для задания порядка сортировки:
# вспомогательный массив %OrderedMonths %OrderedMonths =( "January"=>0,
"February"=>l,
"March"=>2,
"April"=>3,
"Мау"=>4, "June"=>5, "July"=>6, "August"=>7, "September"=>8, "October"=>9, "November"=>10, "December"=>ll ); # формирование структуры for $month (sort {$OrderedMonths{$a}<=>$OrderedMonths{$b}}
keys %OrderedMonths) { $i = $OrderedMonths{$month}; $months{$month}=$months[$ i];' };
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий