Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Perl и странности с <FH>  (Прочитано 911 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Malamut

  • Автор темы
  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Perl и странности с <FH>
« : 12 Апреля 2009, 14:05:15 »
Пишу тут маленькую программу, в какой-то момент мне потребовалось поставить разделитель входных записей на v0 ('\0'), круто, всё работает, оператор <FH> считывает до 0 байта. Но потом мне надо было поставить всё обратно. В итоге я заимел примерно следующий код:
$/="\n";
open INFILE, "<${_[0]}" or die "ImportLite: ошибка открытия файла ${_[0]}\n";
my $str = <INFILE>;
print $str=~s/\n//g,"\n" and die;
который, вместо ожидаемого 0, выдаёт в консоль 1706 (количество строк в файле). Т.е. несмотря на $/="\n" оператор <INFILE> читает файл целиком, хотя как показывает print $str=~s/\n//g,"\n" символов перевода строки в этом файле навалом. Может кто сталкивался и сможет помочь?
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: Perl и странности с <FH>
« Ответ #1 : 14 Апреля 2009, 13:04:33 »
У меня этот код работает.
Может, дело в scope, и $/ оказывается локальной.
Можно попробовать use vars qw($/); чтобы точно сделать ее глобальной.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

 

Страница сгенерирована за 0.038 секунд. Запросов: 21.