Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как прочитать файл в скаляр? 
:(
    Опции темы
IceSunrise
Дата 28.8.2008, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.4.2008
Где: Санкт-Петербург

Репутация: 3
Всего: 3



Привет!

Как можно сразу прочитать содержимое файла в скаляр?
Например, если файл текстовый, то я делаю так:
Код

open FILE, "<$0" or die "Can't open file ($0): '$!'\n";

my $data;
$data .= $_ for <FILE>;

print "DATA: '$data'\n";


А можно как-нибудь без цикла? А если файл бинарный? Читать порциями по N байт? хочу проще smile
PM MAIL   Вверх
arto
Дата 28.8.2008, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



my $body = do { local $/; <FILE> };
PM MAIL ICQ   Вверх
AriX
Дата 28.8.2008, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 311
Регистрация: 16.6.2003

Репутация: 1
Всего: 19



File::Slurp
PM MAIL   Вверх
IceSunrise
Дата 28.8.2008, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.4.2008
Где: Санкт-Петербург

Репутация: 3
Всего: 3



arto,  спасибо, интересно, но с бинарными не пройдет номер.


AriX,  спасибо за наводку, так и думал, что есть подобный модуль.
PM MAIL   Вверх
gcc
Дата 28.8.2008, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 1
Всего: 17



Код

open(ML, "mmm");
while ($line = <ML>)
{

PM WWW ICQ Skype GTalk Jabber   Вверх
arto
Дата 28.8.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



хм, почему не пройдет?

# perl -e 'open F,$ARGV[0]; $a = do { local $/; <F> }; print $a;' /bin/ls > ls
# cmp /bin/ls ls
#

PM MAIL ICQ   Вверх
IceSunrise
Дата 28.8.2008, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 7.4.2008
Где: Санкт-Петербург

Репутация: 3
Всего: 3



arto,  вы правы! Прочитал, что когда переменная $/ не определена, это заставляет perl проглатывать целые файлы сразу. Здорово, спасибо! smile
PM MAIL   Вверх
nitr
Дата 28.8.2008, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



gcc, ROFL

arto, прав.

IceSunrise, надеюсь у вас файлы маленькие ;)


--------------------
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0880 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.