Michael Ilyin (
yorool_gui) wrote2005-03-14 05:10 pm
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
о Perl
Перл замечательный язык, когда на нем пишу Я. Когда на нем пишут другие -- это кошмар. И подозреваю, что это взаимно.
use strict;
...
no strict 'refs';
...
$self->{LABELS}->{$title} = $3;
$self->{LABELS}->{$title}->{NUM} = $num++;
Это работатет. Но я не понимаю, ради чего надо так извращаться. Это не тот Перл, на котором пишу я. На моем Перле ref $self->{LABELS}->{$title} будет либо SCALAR, либо HASH, но никак не то и другое одновременно. А вот на Перле этого человека в $self->{LABELS}->{$title} хранятся сразу два значения и ему это удобно. Но это другой язык.
use strict;
...
no strict 'refs';
...
$self->{LABELS}->{$title} = $3;
$self->{LABELS}->{$title}->{NUM} = $num++;
Это работатет. Но я не понимаю, ради чего надо так извращаться. Это не тот Перл, на котором пишу я. На моем Перле ref $self->{LABELS}->{$title} будет либо SCALAR, либо HASH, но никак не то и другое одновременно. А вот на Перле этого человека в $self->{LABELS}->{$title} хранятся сразу два значения и ему это удобно. Но это другой язык.
no subject
А вот no strict 'refs' -- это да. Я около часа тоже этот код понимать просто отказывался, тем более что no strict 'refs' было не сразу под use strict, а пятью строчками ниже, куда я сначала не поглядел.
Я, кстати, так толком и не пониямаю, как это работает. Не, я помню что-то про хитрые структуры, в которых хранятся перловые переменные и догадываюсь, что они просто хранят там два значения для разных типов. Но что вернет ref на такую переменную -- не понимаю.
no subject
А вот без кавычек -- да, работает всегда. Но все равно очень не люблю. Потому что для меня идентификатор без типа в перле -- это однозначно константа (use constant { LABEL => 1, NUM => 2 };)
no subject
no subject
no subject
Да, это минорное зло. Я уже привык в чужом коде. Но сам не ленюсь :)
no subject