Vi Veri Veniversum Vivus Vici
Осторожно, быдлокод! Я не перловик все же.

  1. #!/usr/bin/perl -i
  2. use warnings;
  3. use strict;
  4.  
  5. my $fields;
  6. my $order;
  7.  
  8. $fields->{'partnumber'} = 'TEXT';
  9. $fields->{'date_add'} = 'lol';
  10. $fields->{'id'} = 'huj';
  11. $fields->{'id1c'} = 'TEXT';
  12. $fields->{'md5'} = 'TEZA';
  13.  
  14. $order->{'md5'} = 3;
  15. $order->{'id'} = 1;
  16. $order->{'date_add'} = 5;
  17. $order->{'partnumber'} = 2;
  18. $order->{'id1c'} = 4;
  19.  
  20. my @keys = sort { ($fields->{$a}=~/s*TEXTs*/is) cmp ($fields->{$b}=~/s*TEXTs*/is) || $order->{$a} cmp $order->{$b} } keys %$fields;
  21.  
  22. for my $key (@keys) {
  23. print "Key $key; Content: $fields->{$key}; Order: $order->{$key}n";
  24. }


Данный пример отсортирует те поля, в которых присутствует подстрока "TEXT", и засунет их в конец массива, а между полями обоих групп (без подстроки с подстрокой) отсортирует по порядку, указанному в хеше $order.

@темы: Perl