Ознакомьтесь с нашей политикой обработки персональных данных
  • ↓
  • ↑
  • ⇑
 
Записи с темой: perl (список заголовков)
20:35 

Type of arg 1 to keys must be hash (not private variable)

Vi Veri Veniversum Vivus Vici
It can be an error in Perl 5.10, but following code will works properly in 5.14+:

  1. #!/usr/bin/perl -w
  2.  
  3. use strict;
  4. use warnings;
  5. use Data::Dumper;
  6.  
  7.  
  8. my $h = {};
  9.  
  10. $h->{'d'} = {};
  11. $h->{'d'}{'t1'} = 'a';
  12. $h->{'d'}{'t2'} = 'b';
  13.  
  14. my $hh = $h->{'d'};
  15.  
  16. for my $k (keys $hh) {
  17. my $v = $hh->{$k};
  18. print "$k = $v\n";
  19. }


Just use "%" symbol before accessing to hash:

  1. #!/usr/bin/perl -w
  2.  
  3. use strict;
  4. use warnings;
  5. use Data::Dumper;
  6.  
  7.  
  8. my $h = {};
  9.  
  10. $h->{'d'} = {};
  11. $h->{'d'}{'t1'} = 'a';
  12. $h->{'d'}{'t2'} = 'b';
  13.  
  14. my $hh = $h->{'d'};
  15.  
  16. for my $k (keys %$hh) {
  17. my $v = $hh->{$k};
  18. print "$k = $v\n";
  19. }


And it will work on both versions of Perl:


$ perl test_hashes.pl
t1 = a
t2 = b
$ perl -v

This is perl 5, version 18, subversion 2 (v5.18.2) built for x86_64-linux-gnu-thread-multi
(with 41 registered patches, see perl -V for more detail)

$ perl test_hashes.pl
t2 = b
t1 = a
$ perl -v

This is perl, v5.10.1 (*) built for x86_64-linux-thread-multi


@темы: Perl

11:29 

В mysqldiff поправлена работа с изменением колонок, когда они могут стать PK

Vi Veri Veniversum Vivus Vici
Следите за развитием:

github.com/GuyFawkes/mysqldiff

@темы: Perl, mysqldiff

16:39 

Сортировка по двум признакам (свойствам, параметрам, характеристикам) в Perl

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

11:13 

vxs.so: undefined symbol: Perl_Gthr_key_ptr или ебля с Fedora 16

Vi Veri Veniversum Vivus Vici
Обновив в пятницу федору с 15-й версии, я, придя на работу в понедельник, не ждал беды. Дело в том, что я разрабатываю форк mysqldiff'а (github.com/GuyFawkes/mysqldiff), и, внеся очередные изменения, решил выполнить ./perl_install.sh

На что оно ответило мне вот в такой форме:



Я попробовал все:


(ебаный downgrade не может в зависимости), но смог откатиться только до 5.14.1 с 5.14.2, поскольку более ранних перлов для 16-й федоры не существует в принципе.
Попробовал пляски с переустановкой перла, удалением и инсталлом Module::Build, но все было напрасно.

И тут, спасибо Косте, его осенило:



Команда выполнилась без ошибок.



Ну, затем в /etc/profile.d создал файлик с этой командой, установил mysql, потертый к хуям во время реинсталлов перла (сколько же всего он тянет, даже nginx удалил) и все заработало.

@темы: Perl_Gthr_key_ptr, Perl, Fedora 16

Small Coder Blog

главная