gudleifr писал(а):
"Думать на Perl"? А чем это принципиально отличается от думания на awk, shell и C, взятых по отдельности?
Ну я не методист, четко не расскажу. Регэкспы - это вкусно и полезно. Но динамическая типизация с Си-программерами творит чудеса.
Была задача перегонки Банка Данных (слабоструктурированные, но связанные данные) в строго формализованный формат. Дружок принялся конструировать структуры, описывать их и документировать для себя. Я предложил ему Perl
Все его структуры описал вот так:
Код:
my $Root;
Он начал меня высмеивать. Хорошо, говорю, на тебе твое дерево параграфов статей (код примерный), ты исписал своими структурами три листа. А оно того не стоит. Структуры все - в пень. Все делается во время работы:
Код:
my $Root;
my $R = ["One","Two"];
my %Z = ("1"=>1,"2"=>["A","B","C"],"3"=>2);
${$Root}{${$R}[0]} = [\%Z,["*"],["-"]];
${$Root}{${$R}[1]} = [$Z{"1"},["+"],["+"]];
1;
А код строит нечто подобное, это я так, навскидку:
Код:
0 HASH(0x2877a48)
'One' => ARRAY(0x2cc1f28)
0 HASH(0x24aa280)
1 => 1
2 => ARRAY(0x4ea500)
0 'A'
1 'B'
2 'C'
3 => 2
1 ARRAY(0x2cc2540)
0 '*'
2 ARRAY(0x2bbf808)
0 '-'
'Two' => ARRAY(0x287c918)
0 1
1 ARRAY(0x2cd3bf0)
0 '+'
2 ARRAY(0x2872440)
0 '+'
Результатом было недоумение. Потом нелепые попытки на Perl'е с односложными структурами и вкусными регэкспами. И только потом он забыл про свои конструкторо-деструкторы и утечку памяти, сконцентрировался на задаче.