![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| amg |
|
||||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Вопрос вызван тем, что я так и не смог до конца понять, почему же работает конструкция отсюда:
Посмотрите:
По моему глупому разумению, в каждом случае должно было бы печататься одно и то же. Однако в примерах 2 и 3 добавление в результирующий массив происходит только когда рег. выражение "срабатывает", т.е. возвращает 1.
Если рег. выражение "не срабатывает", оно возвращает "ложь". Я знаю три вида "лжи" в Perl'е: undef, 0, ''. Но если заполнить массив, например, пустыми строками,
Вопрос заключается в следующем: какую такую "ложь" возвращает несработавшее регулярное выражение, что map и push не заполняют массив @arr? И можно ли сделать, чтобы $_==$cifra вело себя так же. Это сообщение отредактировал(а) amg - 14.9.2006, 12:33 |
||||||||
|
|||||||||
| amg |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1145 Регистрация: 3.8.2006 Где: Новосибирск Репутация: 38 Всего: 50 |
Я наконец то разобрался, и отвечаю сам себе.
Есть еще один вид "лжи" в Perl'е: пустой список. Его то, оказывается, и возвращает "несработавшее" регулярное выражение в контексте map и push. Дальше, учитывая, что список пустых списков есть пустой список, все просто. А чтобы $_==$cifra вело себя так же, надо сказать:
|
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |