Довідник по perl функції введення

Готує файл, асоційований з дескріптом ДЕСКРИПТОР, для читання і запису в довічним форматі, а не в текстовому, в операційних системах, які розрізняють двійкові і текстові файли. В Unix ця функція не має ніякого ефекту; необхідна в MS-DOS і інших архаїчних системах, інакше двійковий файл може бути зіпсований.

Розриває зв'язування хеш-массива і файлом бази DBM. Ми замінили функцією untie ().

Створює зв'язування хеш-массива з файлом бази DBM, ім'я якого визначається значенням параметра ФАЙЛ_DB. Ми замінили функцією tie (). Файл бази даних відкривається в режимі, зазначеному параметром РЕЖИМ.

Поза тілом функції eval () виводить значення елементів списків, заданого параметром СПИСОК, в стандартний файл помилок STDERR і завершує виконання сценарію Perl з поточним значенням спеціальної змінної $. Якщо використовується в тілі функції eval (), то повідомлення про помилку поміщається в змінну $ @ і функція eval () завершується з невизначеним значенням. Така поведінка дозволяє використовувати функцію die () для генерування виняткових станів.

Застосовується також у функціях, що відносяться до управління виконанням програм.

Тестує файл, асоційований з дескріптом, заданим параметром ДЕСКРИПТОР, на кінець файлу. Повертає 1, якщо наступна операція читання з файлу поверне кінець файлу. Вжита без параметра, використовує в якості параметра файл, для якого виконувалася остання операція читання. Якщо використовується з порожніми дужками eof (), то тестує символ кінця самого останнього файлу зі списку файлів, переданих в сценарій через командний рядок.

Повертає числовий системний дескриптор для файлу, асоційованого з дескриптором, заданим параметром ДЕСКРИПТОР.

Блокує файл, асоційований з дескриптором, заданим параметром ДЕСКРИПТОР, для виконання іншими користувачами операцій, визначених параметром ОПЕРАЦІЯ. Повертає логічне значення Істина в разі успішної блокування файлу і Брехня в іншому випадку. Блокує повністю весь файл, а не окремі записи.

Оголошує формат, який використовується для виведення функцією write ().

Параметр ІМЯ_ФОМАТА представляє правильний ідентифікатор Perl. Він повинен в точності відповідати імені дескриптора файлу, який використовується в якості єдиного параметра у функції виведення write ().

Функція getc повертає символ в поточній позиції файлу, дескриптор якого переданий їй як параметр, або невизначене значення у разі досягнення кінця файлу або виникнення помилки. Якщо функція викликається без параметра, то вона читає символ з стандартного файлу виводу STDIN.

Тут ДЕСКРИПТОР представляє дескриптор файлу, в який функція виводить строкові дані, представлені списком виведення СПИСОК. Він може складатися з змінних, елементів масивів і виразів, що обчислюються як строкові дані. Дескриптор файлу створюється функцією open (). Він може бути опущений, і в цьому випадку висновок здійснюється в стандартний файл виведення STDOUT, якщо тільки функцією select () не оберете інший файл виводу за замовчуванням. Звичайне стандартне пристрій виведення - екран монітора комп'ютера.

Функція print при виведенні свого списку не завервает його символом нового рядка "n". Це означає, що наступна функція print почне виведення на екран безпосередньо після останнього виведеного попередньою функцією print символу. Якщо така поведінка не бажано, то слід список виведення кожної функції print явно завершувати рядком, що містить символ нового рядка, або включати його останнім символом останнього елемента списку висновку.


Ось що вийде на екрані.


Друга функція print починає свій висновок на тому самому рядку, на якій завершила виведення перша функція, в якій в списку виведення немає символу переходу на новий рядок. У четвертій функції явно вказано дескриптор стандартного файлу виводу STDOUT. Функція print, як і більшість інших функцій, є списковому операцією, і всі елементи списку виведення обчислюються в списковому контексті. Цю обставину слід враховувати при використанні в якості елементів списку виведення виразів з викликами підпрограм. Якщо параметри функції print, включаючи дескриптор файлу, укладені в круглі дужки, то така синтаксична конструкція вважається термо і в вираженні має наівичшій пріоритет обчислення.

Буде надрукована сума значень змінних $ m і $ n, а не їх суму, зведену в квадрат. Компілятор Perl, виявивши після лексеми print ліву круглу дужку, знайде праву круглу дужку і розглядатиме їх вміст як список параметрів функції print. А так як така констркцій є терм, то спочатку буде виконана операція друку суми значень змінних, а потім результат цієї операції (Істина = 1) буде зведений в квадрат. Додавання необов'язкового дескриптора стандартного файлу виводу STDOUT виправить подібну помилку.

Якщо в функції друку print не заданий список виведення, то вона за замовчуванням виводить вміст спеціальної змінної $ _ в файл, визначений параметром ДЕСКРИПТОР.

Виводить форматований список строкових даних в файл, асоційований з дескріптом, заданий параметром ДЕСКРИПТОР. Якщо цей параметр опущений, то висновок здійснюється в стандартний файл виведення STDIN або поточний файл, встановлений функцією select (). Параметр ФОРМАТ представляє рядок, що містить символи форматування, повністю збігаються з символами форматування системної функцією Unix printf (3).

Припустимо, що файл in.dat містить три рядки даних:

Встановлює поточну позицію каталогу, асоційованого з дескриптором ДЕСКРИПТОР, на початок.

Поточна позиція в файлі автоматично змінюється відповідно до вибраних операціями читання / запису. Її можна змінити за допомогою функції seek (), якій передаються в якості параметрів дескриптор файлу, зсув і точка відліку. Для пов'язаного з дескриптором файлу встановлюється нова поточна позиція, зміщена на заданий параметром ЗСУВ число байт щодо точки відліку.

Параметр Точка_отсчета може приймати одне з трьох значень:

  • 0 - початок файлу
  • 1 - поточна позиція
  • 2 - кінець файлу

Зсув може бути як позитивним, так і негативним. Зазвичай воно негативно для зміщення щодо кінця файлу і позитивно для зміщення відносно початку файлу. Для завдання точки відліку можна скористатися константами SEEK_SET, SEEk_CUP і SEEK_END з модуля IO :: Seekable, які відповідають початку файлу, поточної позиції і кінця файлу. Природно, необхідно підключити цей модуль до програми за допомогою ключового слова use.

Наприклад, такі оператори встановлюють однакові поточні позиції в файлах:

Для переходу в початок або кінець файлу слід використовувати нульовий зсув щодо відповідних точок відліку при зверненні до функції seek ():

Встановлює поточну позицію каталогу, асоційованого зі своїм дескриптором (параметр ДЕСКРИПТОР), для функції readdir (). Параметр ПОЛОЖЕННЯ повинен бути значенням, що повертається функцією telldir.

Повертає дескриптор поточного встановленого файлу виводу. Якщо заданий параметр ДЕСКРИПТОР, робить файл, асоційований з цим дескриптором поточним встановленим файлом виводу. Це призводить до того, що функції print () і write () без дескрипторів здійснюватимуть висновок саме в цей файл.

Здійснює виклик системної команди, заданої першим елементом передається функції списку (параметр СПИСОК); інші елементи списку передаються цій команді в якості параметрів. У разі не успішного виконання системної команди, повертає -1 і в змінній $! міститься інформація про помилку.

Аналогічна функції read (), за винятком того, що здійснює не буферізованние введення даних, не використовуючи буфери стандартної системи введення / виводу stdio.

Повертає поточну позицію в файлі, асоційованим з заданим параметром ДЕСКРИПТОР дескриптором. Якщо параметр опущений, то мається на увазі останній файл, для якого була виконана операція читання даних.

Повертає поточну позицію в каталозі, асоційованого з заданим параметром ДЕСКРИПТОР дескриптором.

Функція truncate () усікає файл до заданої довжини. Для завдання файлу можна використовувати як ім'я файлу, так і дескриптор відкритого файлу.

Функція повертає значення Істина, якщо довжина файлу успішно усічена до кількості байт, визначених у параметрі ДОВЖИНА, або невизначене значення undef в іншому випадку. Під урізанням файлу розуміється не тільки зменшення його довжини, а й збільшення. Це означає, що значення другого параметра функції truncate () може бути більше істинної довжини файлу, що дозволяє робити "дірки" у вмісті файлу, які в подальшому можна використовувати для запису необхідної інформації, не знищуючи вже записану в файл.

Приклад (Файл з "дірками"):

На кожному кроці першого циклу for в кінець файлу out.dat записується інформація довжиною 7 байтів, а потім його довжина збільшується на 12 байтів, утворюючи порожній простір у файлі. Наступний цикл for заносить в ці створені "дірки" інформацію довжиною 12 байтів, які не затираючи зберігається в файлі інформацію. Для зміни довжини файлу функцією truncate доводиться закривати його і знову відкривати. Це пов'язано з тією обставиною, що функція truncate () додає порожній простір в початок файлу, зрушуючи в кінець його вміст, якщо застосовувати її, не закриваючи файл. Після виконання першого циклу for вміст файлу out.dat виглядає так:

По завершенні всієї програми файл буде містити следуюшую рядок:

Виводить в стандартний файл помилок STDERR значення елементів списку, що визначається параметром СПИСОК. Якщо він порожній, то виводить вміст спеціальної змінної $ @ (зазвичай після виконання функції eval), додаючи рядок "t. Caught", а якщо і вона порожня, то виводить повідомлення "Warning: Something-s wrong"

Здійснює форматний висновок в файл, Асоційований з заданим параметром ДЕСКРИПТОР дескриптором, відповідно до визначеного форматом. Якщо параметр не заданий, то виводить в стандартний файл виведення STDOUT або в файл, обраний функцією select ().

Схожі статті