| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > open 0 |
| Автор: chaos 31.3.2010, 08:48 | ||
объясните пожалуйста принцип работы программы
интересуют последние 2 строчки Заранее благодарен! |
| Автор: Egik2 31.3.2010, 10:24 |
| Да, классный скрипт. Как я понимаю, так: 0 - файловый дескриптор STDIN процесса perl. командой open 0, мы открываем его еще раз print <0>; - печатаем его содержимое. То есть то что получается вполне логично, печатаем, то что получаем на вводе Думаю данную штуку можно сделать на любом языке |
| Автор: shamber 31.3.2010, 10:52 |
| Egik2, ага соревнования есть, кто короче напишет |
| Автор: chaos 31.3.2010, 10:53 |
| Egik2, не совсем вкурил. те что Вы написали я это сам понял. но вот про 0 и как там появился текст программы не понял %) PS мож кто перлдоком кинет по конкретной проблемЕ ? |
| Автор: Pfailed 31.3.2010, 12:35 | ||
perldoc open:
Как раз наш случай. Соответственно в качестве имени файла берется переменная $0. А переменная $0 содержит имя файла содержащего данную программу. Соответственно открывается для чтения сам исходник скрипта, считывается в списочном контексте (а значит целиком) и распечатывается. |
| Автор: chaos 31.3.2010, 15:08 | ||||||
ок. исходя из Ваших суждений код
должен сработать, но увы. Пчоему? Или я где-то ошибся? |
| Автор: shamber 31.3.2010, 15:26 |
| Какое отношение имеет к $0? |
| Автор: arto 31.3.2010, 15:55 |
| # cat > aaa # perl -e '$a = "aaa"; open a; print <a>;' aa bb cc # |
| Автор: amg 31.3.2010, 16:02 | ||
chaos, чтобы было понятнее, вот так попробуйте
ЗЫ Это, наверное, нечестный квин, т.к. используются особые свойства одной из переменных. |
| Автор: ginnie 31.3.2010, 16:04 |
| arto, не понял Ваш пример, не поясните? |
| Автор: arto 31.3.2010, 16:06 |
| забыл добавить, что: # cat > aaa aaa bbb ccc ^D # |
| Автор: ginnie 31.3.2010, 16:08 | ||
А выводится
|
| Автор: arto 31.3.2010, 16:16 |
| угу, сам опешил. |
| Автор: ginnie 31.3.2010, 16:19 | ||
А почему у меня не так?
|
| Автор: arto 31.3.2010, 19:58 |
| # perl -V:mo mo='yesssss!'; # |
| Автор: krypt3r 1.4.2010, 09:09 | ||||
С перл-манков
Прикольная вещь =) Но с прагмой strict она не дружит. Точнее, open 0; print <0>; работает, а с переменными так уже не получится |
| Автор: arto 1.4.2010, 09:18 |
| # perl -Mstrict -Wc -e 'my $A = "aaa"; open A; print <A>' -e syntax OK # |
| Автор: Pfailed 1.4.2010, 10:00 |
| Если объявить переменную как our, то сработает. |