מחיקת קובץ
מחיקת קובץ נעשית באמצעות הפונקציה 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 $_: $!";
}
להוספת תגובה, אנא התחברו לדרכונט.