אתה נמצא כאן יסודות השפה  »  עבודה עם מערכת הקבצים  »  מחיקת קובץ

מחיקת קובץ

מחיקת קובץ נעשית באמצעות הפונקציה  unlink. הפונקציה מוחקת קישור אחד של הקובץ. במידה וקיימים לקובץ מספר
קישורים קשיחים  (hard links), הקובץ ימחק רק כאשר הקישור האחרון נמחק, ואין אף תהליך שמשתמש בקובץ.
בד"כ לקבצים יש רק קישור אחד ולכן אפשר להתייחס לפונקציה הזו כמוחקת את הקובץ.

#!/usr/local/bin/perl

unlink (old_log\.txt)
/*הקובץ שאנחנו רוצים למחוק*/
;
print "enter filename to delete: \n ";
chomp($filename = <STDIN>);
unlink ($name)
/*הקובץ שאנחנו רוצים למחוק*/

הפונקציה  unlink יכולה לקבל מספר שמות של קבצים כארגומנט.

#!/usr/local/bin/perl

unlink ("file1.txt","file2.txt")
/*הקבצים שאנחנו רוצים למחוק*/
;
unlink <*.o>;
/*הכנת רשימה של קבצים ע"י שימוש ב globbing*/

ה-  glob בדוגמא השניה מוערך כרשימה, וזה בדיוק הארגומנט שדרוש לפונקציה  unlink.

הערך המוחזר של הפונקציה הוא מספר הקבצים שנמחקו בהצלחה. במידה וביקשנו למחוק מספר קבצים , ורק חלק נמחקו, איל לנו דרך לדעת מי מהקבצים נמחק ומי לא.
כדי לדעת בדיוק איזה קובץ נמחק, צריך לבצע את המחיקה אחד-אחד כמו בדוגמא:

#!/usr/local/bin/perl

foreach $filename (<*.o>) { #עוברים על הקבצים אחד-אחד
     unlink($filename)
/*מחיקת הקובץ*/
||
/*אם מחיקת הקובץ החזירה 0, עוברים לביצוע ה חלק השני*/
warn
/*הדפס הודעת שגיאה*/
"can not delete $filename : $!
/*משתנה המערכת שמכיל את הודעת השגיאה*/
"
;
}

אם הפונקציה  unlink לא מקבלת ארגומנט, היא תתייחס ל _$ כארגומנט שלה. לכן הדוגמא הקודמת יכולה להכתב באופן (הפחות קריא) הבא:

#!/usr/local/bin/perl

foreach (<*.o>) { # עוברים על הקבצים אחד-אחד
    
unlink || warn "can not delete $_: $!";
}









להוספת תגובה, אנא התחברו לדרכונט.