Решил написать серию постов с вопросами на понимание Perl. То есть каждый пост - отдельный вопрос. Каждый такой пост будет содержать: вопрос, ответ, объяснение ответа.
Вопросы не будут содержать каких-либо редко используемых функций. Главное здесь проверить не знание функций, а понимание поведения Perl-кода. Возможно многим они покажутся очевидными, но это говорит о том, что вы понимаете Perl ;)
Когда вопросов насобирается 20 штук - соберу все в один тест.
Вопрос 1
@a = 0; print 10 if @a
Ответ: 10
Пояснение: Все логические операции работают в скалярном контексте. В данном случае запись эквивалентна print 10 if scalar(@a)
5 коммент.:
Мне кажется, что более интересным есть тот факт что для перлы @a = 0; эквивалентно @a = ( 0 );
Хотя как по мне конструкция "@a = 0;" не совсем корректная, потому что не понятно, что разработчик хотел сделать.
Создается впечатление, что когда-то была переменная $a = 0 потом появилась необходимость использовать массив, и программист просто заменил знак $ на @.
Я бы не стал в своем коде использовать конструкции типа "@array = $scalar;"
Да есть в этой записи что-то настораживающие.
Создается ощущение, что
так мы получаем размер массива - "$scalar = @array", а так "@array = $scalar" - устанавливаем.
Хотя для установки размера массива мы должны написать что-то типа - "$#array = $scalar-1"
Можно и в отдельный вопрос выделить такое "@a = 0" присвоение, главное объяснить почему именно так оно должно работать:)
а Вы про УрГУ и Перл100 слышали?
посмотрите, там тоже немало интересного:
http://cs.usu.edu.ru/langs/perl/
Спасибо, реально интересные вещи есть
Отправить комментарий
Не забудьте добавить себя в постоянные читатели и включить уведомления о новых комментариях, либо воспользуйтесь RSS каналом ;)