#!/usr/bin/perl -i use warnings; use strict; my $fields; my $order; $fields->{'partnumber'} = 'TEXT'; $fields->{'date_add'} = 'lol'; $fields->{'id'} = 'huj'; $fields->{'id1c'} = 'TEXT'; $fields->{'md5'} = 'TEZA'; $order->{'md5'} = 3; $order->{'id'} = 1; $order->{'date_add'} = 5; $order->{'partnumber'} = 2; $order->{'id1c'} = 4; my @keys = sort { ($fields->{$a}=~/s*TEXTs*/is) cmp ($fields->{$b}=~/s*TEXTs*/is) || $order->{$a} cmp $order->{$b} } keys %$fields; for my $key (@keys) { print "Key $key; Content: $fields->{$key}; Order: $order->{$key}n"; }
Данный пример отсортирует те поля, в которых присутствует подстрока "TEXT", и засунет их в конец массива, а между полями обоих групп (без подстроки с подстрокой) отсортирует по порядку, указанному в хеше $order.