يستخدم Perl متغيرًا يسمى نوع مؤشر الملف لمعالجة الملفات.
تتطلب قراءة البيانات أو كتابتها من ملف مقبض ملف.
مؤشر الملف هو اسم اتصال الإدخال/الإخراج.
يوفر Perl ثلاثة مقابض للملفات: STDIN، وSTDOUT، وSTDERR، والتي تمثل الإدخال القياسي، والإخراج القياسي، وإخراج الخطأ القياسي على التوالي.
يمكنك فتح الملفات في Perl باستخدام الطرق التالية:
فتح FILEHANDLE، EXPRopen FILEHANDLE، FILENAME، MODE، PERMSsysopen FILEHANDLE، FILENAME، MODE
وصف المعلمة:
FILEHANDLE: مقبض الملف، يُستخدم لتخزين معرف ملف فريد.
EXPR: تعبير يتكون من اسم الملف ونوع الوصول إلى الملف.
الوضع: نوع الوصول إلى الملف.
PERMS: بتات إذن الوصول (بتات الإذن).
في الكود التالي، نستخدم الدالة open لفتح الملف file.txt في وضع القراءة فقط (<):
open(DATA, "<file.txt");
< يشير إلى وضع القراءة فقط.
البيانات الموجودة في الكود هي مؤشر الملف المستخدم لقراءة الملف. المثال التالي سيفتح الملف ويخرج محتوى الملف:
الكود التالي يفتح الملف file.txt للكتابة ( > ):
افتح (DATA, ">file.txt") أو "لا يمكن فتح ملف file.txt، $!";
> يشير إلى طريقة الكتابة.
إذا كنت بحاجة إلى فتح الملف للقراءة والكتابة، يمكنك إضافة علامة + قبل الحرف > أو <:
open(DATA, "+<file.txt"); أو يموت "لا يمكن فتح ملف file.txt, $!";
لن تقوم هذه الطريقة بحذف المحتوى الأصلي للملف، إذا كنت تريد حذفه، فسيكون التنسيق كما يلي:
افتح DATA، "+>file.txt" أو "لا يمكن فتح ملف file.txt، $!"؛
إذا كنت تريد إلحاق بيانات بملف، فأنت تحتاج فقط إلى فتح الملف في وضع الإلحاق قبل إلحاق البيانات:
open(DATA,">>file.txt") ||. die "لا يمكن فتح ملف file.txt، $!";
>> يعني إلحاق البيانات بنهاية الملف الموجود إذا كنت تريد قراءة محتوى الملف المراد إلحاقه، فيمكنك إضافة العلامة +:
open(DATA,"+>>file.txt") ||. die "لا يمكن فتح ملف file.txt، $!";
يسرد الجدول التالي أوضاع الوصول المختلفة:
| نموذج | يصف |
|---|---|
| < أو ر | افتح في وضع القراءة فقط وأشر مؤشر الملف إلى رأس الملف. |
| > أو ث | افتحه في وضع الكتابة، وأشر مؤشر الملف إلى رأس الملف واقتطع حجم الملف إلى الصفر. إذا كان الملف غير موجود، حاول إنشائه. |
| >> أو أ | افتح في وضع الكتابة وأشر بمؤشر الملف إلى نهاية الملف. إذا كان الملف غير موجود، حاول إنشائه. |
| +< أو ص+ | افتح في وضع القراءة والكتابة وأشر مؤشر الملف إلى رأس الملف. |
| +> أو ث+ | افتحه في وضع القراءة والكتابة، وأشر مؤشر الملف إلى رأس الملف واقتطع حجم الملف إلى الصفر. إذا كان الملف غير موجود، حاول إنشائه. |
| +>> أو أ+ | افتح في وضع القراءة والكتابة وأشر مؤشر الملف إلى نهاية الملف. إذا كان الملف غير موجود، حاول إنشائه. |
الدالة sysopen تشبه الدالة المفتوحة، فيما عدا أن أشكال المعلمات الخاصة بها مختلفة.
يفتح المثال التالي ملفًا للقراءة والكتابة (+<اسم الملف):
sysopen(DATA, "file.txt", O_RDWR);
إذا كنت تريد مسح الملف قبل تحديثه، فطريقة الكتابة هي كما يلي:
sysopen(DATA, "file.txt", O_RDWR|O_TRUNC );
يمكنك استخدام O_CREAT لإنشاء ملف جديد، O_WRONLY هو وضع الكتابة فقط، وO_RDONLY هو وضع القراءة فقط.
تعد معلمة PERMS قيمة سمة ثمانية، تشير إلى الأذونات بعد إنشاء الملف. القيمة الافتراضية هي 0x666 .
يسرد الجدول التالي قيم الوضع الممكنة:
| نموذج | يصف |
|---|---|
| O_RDWR | افتح في وضع القراءة والكتابة وأشر مؤشر الملف إلى رأس الملف. |
| O_RDONLY | افتح في وضع القراءة فقط وأشر مؤشر الملف إلى رأس الملف. |
| O_WRONLY | افتحه في وضع الكتابة، وأشر مؤشر الملف إلى رأس الملف واقتطع حجم الملف إلى الصفر. إذا كان الملف غير موجود، حاول إنشائه. |
| O_CREAT | إنشاء ملف |
| O_APPEND | إلحاق ملف |
| O_TRUNC | اقتطاع حجم الملف إلى الصفر |
| O_EXCL | إذا كان الملف موجودًا عند استخدام O_CREAT، فسيتم إرجاع رسالة خطأ يمكنها اختبار ما إذا كان الملف موجودًا. |
| O_NONBLOCK | يتيح الإدخال/الإخراج غير المحظور نجاح عمليتنا أو إرجاع خطأ على الفور دون حظرها. |
بعد استخدام الملف، يجب إغلاق الملف لتحديث المخازن المؤقتة للإدخال والإخراج المرتبطة بمقبض الملف. يكون بناء جملة إغلاق الملف كما يلي:
إغلاقFILEHANDLEإغلاق
FILEHANDLE هو مؤشر الملف المحدد، ويعود صحيحًا إذا تم إغلاقه بنجاح.
Close(DATA) ||.die "لا يمكن إغلاق الملف";
هناك عدة طرق مختلفة لقراءة المعلومات وكتابتها في الملفات:
الطريقة الأساسية لقراءة المعلومات من مؤشر ملف مفتوح هي عامل التشغيل <FILEHANDLE>. في سياق عددي، تقوم بإرجاع صف واحد من مقبض الملف. على سبيل المثال:
عندما نستخدم عامل التشغيل <FILEHANDLE>، فإنه سيُرجع قائمة بكل سطر في مقبض الملف، على سبيل المثال يمكننا استيراد جميع الأسطر إلى مصفوفة.
تنفيذ إنشاء ملف import.txt بالمحتوى التالي:
$ القط استيراد.txt 123
اقرأ ملف import.txt ثم ضع كل سطر في مصفوفة @lines:
بتنفيذ البرنامج أعلاه تكون نتيجة الإخراج هي:
123
تقوم الدالة xgetc بإرجاع حرف واحد من FILEHANDLE المحدد، أو STDIN إذا لم يتم تحديده:
getcFILEHANDLEgetc
إذا حدث خطأ، أو كان مؤشر الملف في نهاية الملف، فسيتم إرجاع undef.
يتم استخدام وظيفة القراءة لقراءة المعلومات من مقبض ملف المخزن المؤقت.
تُستخدم هذه الوظيفة لقراءة البيانات الثنائية من ملف.
قراءة مقبض الملف، العدد، الطول، إزاحة قراءة مقبض الملف، العدد، الطول
وصف المعلمة:
FILEHANDLE: مقبض الملف، يُستخدم لتخزين معرف ملف فريد.
SCALAR: يخزن النتيجة إذا لم يتم تحديد OFFSET، فسيتم وضع البيانات في بداية SCALAR. وإلا فسيتم وضع البيانات بعد البايت OFFSET في SCALAR.
الطول: طول المحتوى المقروء.
إزاحة: إزاحة.
يُرجع عدد البايتات المقروءة في حالة نجاح القراءة، و0 في حالة الوصول إلى نهاية الملف، وundef في حالة حدوث خطأ.
بالنسبة لجميع الوظائف التي تقرأ المعلومات من مقابض الملفات، فإن وظيفة الكتابة الرئيسية في الواجهة الخلفية هي الطباعة:
طباعة قائمة التعامل مع الملفات، قائمة الطباعة، الطباعة
يمكن إرسال نتائج تنفيذ البرنامج إلى جهاز الإخراج (STDOUT: الإخراج القياسي) باستخدام مقبض الملف ووظيفة الطباعة، على سبيل المثال:
طباعة "مرحبا بالعالم!n";
في المثال التالي، سنفتح ملفًا موجودًا file1.txt، ونقرأ كل سطر منه ونكتبه في الملف file2.txt:
في المثال التالي، قمنا بإعادة تسمية الملف الموجود file1.txt إلى file2.txt، ويكون الدليل المحدد ضمن /usr/codercto/test/:
#!/usr/bin/perlrename ("/usr/codercto/test/file1.txt"، "/usr/codercto/test/file2.txt" );تقبل وظيفة إعادة التسمية معلمتين فقط وتعيد تسمية الملفات الموجودة فقط.
يوضح المثال التالي كيفية استخدام وظيفة إلغاء الارتباط لحذف الملفات:
يمكنك الحصول على موقع الملف باستخدام وظيفة Tell ، وتحديد الموقع داخل الملف باستخدام وظيفة البحث :
يتم استخدام وظيفة Tell للحصول على موقع الملف:
أخبر FILEHANDLEأخبر
إذا تم تحديد FILEHANDLE، تقوم هذه الدالة بإرجاع موضع مؤشر الملف بالبايت. إذا لم يتم تحديده، فسيتم إرجاع مؤشر الملف المحدد الافتراضي.
تقوم وظيفة البحث () بقراءة الملفات أو كتابتها عن طريق تحريك مؤشر القراءة والكتابة للملف من خلال مقبض الملف، وتقرأ وتكتب بالبايت:
ابحث عن مقبض الملف، والموضع، وأين
وصف المعلمة:
FILEHANDLE: مقبض الملف، يُستخدم لتخزين معرف ملف فريد.
POSITION: يشير إلى عدد البايتات التي سيتم نقلها بواسطة مقبض الملف (مؤشر موضع القراءة والكتابة).
حيث: يشير إلى موضع البداية عندما يبدأ مقبض الملف (مؤشر موضع القراءة والكتابة) في التحرك، والقيم المحتملة هي 0 و1 و2؛ مما يشير إلى بداية الملف والموضع الحالي ونهاية الملف الملف على التوالي.
يقرأ المثال التالي 256 بايت من بداية الملف:
البحث عن البيانات، 256، 0؛
يمكن أيضًا لعمليات ملف Perl اختبار ما إذا كان الملف موجودًا، وما إذا كان يمكن قراءته وكتابته، وما إلى ذلك.
يمكننا أولاً إنشاء ملف file1.txt، كما يلي:
$ cat file1.txt www.codercto.com
بتنفيذ البرنامج أعلاه تكون نتيجة الإخراج هي:
معلومات file1.txt: هو ملف نصي، 15 بايت
يتم عرض عوامل تشغيل اختبار الملف في الجدول التالي:
| المشغل | يصف |
|---|---|
| -أ | الوقت الذي تم فيه الوصول إلى الملف آخر مرة (الوحدة: أيام) |
| -ب | هل هو ملف ثنائي؟ |
| -ج | وقت تعديل عقدة الفهرس للملف (inode) (الوحدة: أيام) |
| -م | الوقت الذي تم فيه آخر تعديل للملف (الوحدة: أيام) |
| -O | الملف مملوك لـ UID حقيقي |
| -ر | يمكن قراءة الملفات أو الدلائل بواسطة UID/GID الحقيقي |
| -س | للمقبس (المقبس) |
| -ت | هل هو ملف نصي؟ |
| -دبليو | يمكن كتابة الملفات أو الدلائل باستخدام UID/GID الحقيقي |
| -X | يمكن تنفيذ الملفات أو الدلائل باستخدام UID/GID الحقيقي |
| -ب | بالنسبة لملفات الكتلة الخاصة (كتلة خاصة) (مثل الأقراص المحملة) |
| -ج | بالنسبة لملفات الأحرف الخاصة (الأحرف الخاصة) (مثل أجهزة الإدخال/الإخراج) |
| -د | للدليل |
| -ه | اسم الملف أو الدليل موجود |
| -و | للملفات العادية |
| -ز | يحتوي الملف أو الدليل على سمة setgid |
| -ك | يحتوي الملف أو الدليل على مجموعة البتات اللاصقة |
| -ل | للروابط الرمزية |
| -س | الملف مملوك لـ UID صالح |
| -ص | الملف عبارة عن أنبوب مسمى (FIFO) |
| -ص | يمكن قراءة الملف باستخدام UID/GID صالح |
| -س | الملف أو الدليل موجود وليس 0 (يرجع عدد البايتات) |
| -ر | مؤشر الملف هو TTY (نتيجة إرجاع وظيفة النظام isatty()؛ لا يمكن استخدام هذا الاختبار لأسماء الملفات) |
| -ش | يحتوي الملف أو الدليل على سمة setuid |
| -ث | يمكن كتابة الملفات باستخدام UID/GID صالح |
| -x | يمكن تنفيذ الملف باستخدام UID/GID صالح |
| -ض | الملف موجود وحجمه 0 (الدليل دائمًا خطأ)، أي ما إذا كان ملفًا فارغًا. |