• Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом


  • Иллюстрированный самоучитель по Perl

    Доступ к файлам

    Чтение информации из файла осуществляется операцией о, операндом которой является дескриптор файла. В скалярном контексте при первом выполнении эта операция читает первую запись файла, устанавливая специальную переменную $., отслеживающую количество прочитанных записей, равной 1. Последующие обращения к операции чтения из файла с тем же дескриптором приводят к последовательному чтению следующих записей. В списковом контексте эта операция читает все оставшиеся записи файла и возвращает список, элементами которого являются записи файла. Разделитель записей хранится в специальной переменной $/, и по умолчанию им является символ новой строки "\n". Perl позволяет задать и другой разделитель записей обычной операцией присваивания переменной $/ нового символа разделителя записей. В примере 7.4 демонстрируются некоторые приемы чтения из файла.

    #! peri – w
    open(F1, "in.dat") or die "Ошибка открытия файла: $!";
    open(F2, "out.dat") or die "Ошибка открытия файла: $!";
    $linel = <F1>; # Первая запись файла in.dat
     $line2 = <F1>; # Вторая запись файла in.dat
    @rest = <F1>; # Оставшиеся записи файла in.dat
    $/=":"; I Задание другого разделителя записей файла @f2 = <F2>;
    # Печать прочитанных записей файла out.dat for($i=0; $i<=$#f2; $i++) { print "$f2[$i]\n";
    }
    $/ = "\n"; # Восстановление умалчиваемого разделителя записей
    close(Fl) or die $!; close(F2) or die $!;
    open(F3, "out.dat") or die "Ошибка открытия файла: $!";
     print <F3>; # Печать всего файла close(F3) or die $!;
    

    Несколько комментариев к программе примера 7.4. В переменные $iine1 и $iine2 читаются соответственно первая и вторая строка файла in.dat, так как используется умалчиваемый разделитель записей "\п". Элементы массива @rest хранят строки с третьей по последнюю этого же файла: в операторе присваивания операция чтения <F1> выполняется в списковом контексте.

    Перед чтением записей файла out.dat устанавливается новый разделитель записей – символ ":". Если файл out.dat, например, содержит только одну строку:

    111: 222: 333: Конец
    

    …то элементы массива @ будут содержать следующие значения:

    $f2[0] = "111:" $f2[l] = "222:" $f2[2] = "333:" $f2[3] = "Конец"
    

    Замечание
    Если при создании файла out.dat его единственная строка завершена переходом на новую строку (нажата клавиша Enter), то $f2[3], будет содержать строку "конец\п"
    .

    При достижении конца файла операция о возвращает неопределенное значение, которое трактуется как Ложь. Это обстоятельство обычно используется для организации чтения записей файла в цикле:

    while($line = <F1>) {
    print $line; f Печать очередной строки связанного
    # с дескриптором F1 файла }
    

    Запись в файл, открытый в режиме записи или добавления, осуществляется функцией print () с первым параметром, являющимся дескриптором файла:

    print ДЕСКРИПТОР СПИСОК_ВЫВОДД;
    

    Эта операция записывает содержимое элементов списка в том порядке, в котором они определены в вызове функции, и не добавляет в конец списка разделителя записей. Об этом должен позаботиться сам программист:

    $/=":"; # Разделитель записей
    print Fl @recll, $/; # Запись в файл первой записи
    print Fl @rec!2, $/; tt Запись в файл второй записи
    

    Замечание
    Между дескриптором и первым элементом списка вывода не должно быть запятой. Если такое случится, то компилятор peri выдаст ошибку:

    No comma allowed after filehandle
    
    Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.