Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
можно написать 'or' вместо ||
Что хотели узнать эти люди?
Они не спросили меня про мои ОО-убеждения.
Они не спросили про элементы функционального программирования (map vs. for; что когда лучше).
Они не спросили про регулярные выражения.
Они не спросили про алгоритмы (хотя бы классическая оптимизация встроенной сортировки от Рендала-Шварца).
Они не спросили, как я отношусь к goto;
Каковы, по моему мнению, должны быть комментарии и документация;
Хорошо ли копипастить код.
Есть ли у меня представления о шаблонизаторах и прочем.
Есть ли у меня представления о патерах (итераторы, адаптеры...).
Что я знаю про ленивые вычисления.
print join(' ', # типа редьюс как бы (убогий, конечно :-))
(
sort # типа функция высших порядков, принимает на вход функцию
{ abs($a) <=> abs($b) } # типа labda a, b:...
(-3, 1, -5, 10) # ...и входные данные
)
);
@a = map { {$_ => $_} } qw/a b/;
@a = map { $x=$_; {$x => $_} } qw/a b/;
my $fh = $self->{'file'};
my $m = <$fh>;
и это
my $m = <$self->{'file'}>;
~$ perl -MO=Deparse, -e 'print map {{$_=>$_}} 1..10'
print map({+{$_, $_};} 1..10);
-e syntax OK
~$ perl -MO=Deparse, -e 'print map {;{$_=>$_}} 1..10'
print map({{
$_, $_;
}} 1..10);
-e syntax OK
Тут прям про это, но вам, возможно, стоит начать пораньше, с типов блоков.my $x=1;
$x = $x++ + ++$x;
print(print «A», print «B», print «C»);
my $x=0;
(1)?$x=1:$x=2;
print $x;
eval { my $a = 'b'; print $a; };
eval q{ my $a = 'b'; print $a; };
my $x=1;
$x = $x++ + ++$x;
print(print «A», print «B», print «C»);
my $x=0;
(1)?$x=1:$x=2;
print $x;
my $x=1;
$x = $x++ + ++$x;
my $x=0;
(1)?$x=1:$x=2;
print $x;
Что меня спрашивали на собеседовании