Вдохновленный исходной нитью и вверх и вперед клоны, здесь один для сообщества Perl.
Какие вопросы должен отвечать хороший программист на Perl?
Вдохновленный исходной нитью и вверх и вперед клоны, здесь один для сообщества Perl.
Какие вопросы должен отвечать хороший программист на Perl?
Вопросы
Объясните разницу между этими строками кода и значениями переменных.
my $a = (4, 5, 6);
my @a = (4, 5, 6);
my $b = 4, 5, 6;
my $c = @a;
Каковы некоторые из самых сильных сторон Perl?
use strict;
? Почему это полезно?Что делает следующий блок кода?
print (3 + 4) * 2;
Испытания
grep
с помощью map
.perldoc
.Почему use strict
полезно?
Мой вопрос перехватчика Какая разница между списком и массивом?.
Мне также нравится спрашивать людей, чтобы показать мне как можно больше способов определения области. Там тот, который люди почти всегда забывают, а другой, который, по мнению большинства людей, обеспечивает область действия, но не делает.
В чем разница между
if ($foo) { ... }
и
if (defined $foo) { ... }
и когда вы должны использовать один над другим?
my
и our
?my
и local
?my $x = ...
и my($x) = ...
?my($x,undef,$z) = ...
?my(@a,@b) = (@list1, @list2)
может быть ошибка?В чем разница между /a(.*)b/
и /a(.*?)b/
?
Что не так с этим кодом?
my @array = qw/a b c d e f g h/;
for ( @array ) {
my $val = shift @array;
print $val, "\n";
}
my $a = 1;
if($a) {
my $a = 2;
}
print $a;
Каково значение $a в конце?
Что не так с использованием переменной в качестве имени переменной?
Я думаю, что подход brian d foy - это гениальная тактика для проверки знаний, понимания и пристрастий к языку и программированию в целом: Что такое пять вещей, которые вы ненавидите в своей любимой язык?. Если они не могут назвать 5, они, вероятно, не велики с языком или полностью не подходят для других подходов.
Он применяет это к людям, пытающимся нажать язык: я бы расширил это и сказал, что он здесь применим. Я ожидаю, что каждый хороший программист Perl сможет назвать пять вещей, которые им не нравятся. И я бы ожидал, что эти пять вещей будут иметь некоторую заслугу.
Напишите код, который создает умеренно сложную структуру данных, скажем, массив хэшей массивов. Как вы получите доступ к определенному листу? Как бы вы прошли через всю структуру?
Для каждой из следующих проблем, как вы решаете это с помощью хэшей?
Мой любимый вопрос. Отсутствует код:
open(my $fh, "<", "file.txt");
while (<$fh>) {
print $_;
}
close($fh);
Этот вопрос должен открыть дискуссию об обработке ошибок в perl. Он также может быть принят и на других языках.
Несколько месяцев назад, хроматический автор Modern Perl, написал аналогичную хорошую статью "Как определить хорошего программиста на Perl", который содержит список вопросов, на которые должен отвечать каждый хороший программист Perl.
Некоторые из этих приятных вопросов приведены ниже:
В чем разница между доступом к элементу массива с помощью
$items[$index]
и@items[$index]
?В чем разница между
==
иeq
?Как вы загружаете и импортируете символы из модуля Perl 5?
В чем разница на стороне вызывающего абонента между
return;
иreturn undef;
?В чем разница между чтением файла с помощью
for
иwhile
?
Для получения полной информации прочитайте Как определить хорошего Perl-программиста.
Как оценивается $foo->{bar}[$baz]($quux)
?
Что такое лексическое закрытие? Когда закрытие полезно? (Пожалуйста, никаких контр-создателей!)
В чем разница между контекстом списка и скалярным контекстом. Как вы получаете доступ к каждому из них? Существует ли такая ситуация, как хэш-контекст? Может быть, немного?
Как заменить значения двух переменных без использования временной переменной?
Что делает этот однострочный шрифт и почему:
perl -pe '}{$_ = $.' file
answer: количество строк в файле, похожее на wc -l
.
Что не так с этим кодом:
my $i;
print ++$i + ++$i;
answer: изменение переменной дважды в одном выражении приводит к поведению undefined.
Простой: будет ли запуск if:
my @arr = undef;
if (@arr) { ... }
answer: yes
Как бы вы закодировали встроенный reverse()
perl? Вы можете использовать другие функции perl.
answer: много способов. Короткий: sub my_reverse {sort {1} @_})
Я также, вероятно, буду копаться в регулярном выражении, так как я ожидаю, что каждый хороший программист Perl сможет управлять регулярным выражением (но не только). Возможные вопросы:
Каков правильный способ инициализации пустой строки?
my $str = q{};
или
my $str = "";
или
my $str = '';