Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Как распечатать одну строку из файла?


Автор: Дмитрий Волк 3.5.2004, 16:56
В данный момент что бы распечатать очередную строку из файла я исспользую код:
print ($temp = <DESCRIPTOR>);

Можно ли сделать это в одну операцию?

P.S.: Пытался <DESCRIPTOR>; но печатает весь файл

Автор: korob2001 3.5.2004, 20:36
Цитата

Пытался <DESCRIPTOR>; но печатает весь файл

Видиш ли функция print всегда возвращает список и принимает тоже список. Соответственно оператор <> вызывается в списковом контексте, именно поэтому мы и получаем весь файл. Потому нам нужно явно указать что мы читаем файл в скалярном контексте. Вот здесь нам и приходит на помощь фукция scalar(). Скобки можно опустить, как тебе удобней.
Вот пример:
Код

print scalar( <DESCRIPTOR> );

удачи.

Автор: Дмитрий Волк 3.5.2004, 22:37
ОГРОМНОЕ спасибо!

Автор: ElectricalStorm 6.5.2004, 16:03
Цитата

Видишь ли функция print всегда возвращает список и принимает тоже список

- чепуха .... smile.gif

вот посмотрите что будет

Код

while (<>) {
   print <>;
   last;
}


Автор: korob2001 6.5.2004, 17:37
Цитата

Цитата

Видишь ли функция print всегда возвращает список и принимает тоже список

- чепуха .... smile.gif

Обоснуй.
Цитата

while (<>) {
  print <>;
  last;
}

И что ты этим хотел сказать?
После запуска программа ожидает ввода, ввожу несколько строк, в результате получаю те строки которые вводил.

Автор: ElectricalStorm 11.5.2004, 19:38
#script.pl
while (<>) {
print <>;
last;
}


запусти
perl script.pl text

Автор: korob2001 12.5.2004, 12:18
Цитата

запусти
perl script.pl text

Да я знаю, что произойдёт при таком вызове. Программа выведет на стандартное устройство вывода содержимое файла text, если файлов задать несколько, то они все, как один, будут выведены на стандартное устройство вывода.
Только я что-то не пойму, к чему это?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)