發新話題

網路管理語言 Perl 入門與實作

6.3 檔案測試
Perl 對於檔案性質的測試支援非常完整,透過簡單的運算,即可輕鬆掌握檔案的相關資訊。

以下是常用的檔案測試算符:
引用:
-r 檔案可讀
-w 檔案可寫入
-x 檔案可執行
-e 檔案/目錄存在
-d 檔案是一個目錄
-s 檔案大小非 0,同時傳回檔案大小
-f 檔案是文字檔
-z 檔案大小為 0
-l 檔案為符號連結檔

用例:

die "$file 這個檔案已經存在了!\n" if -e $file;
用例:
引用:
#! /usr/bin/perl

$file="studdemo.csv";

if (-e $file) {
        print "$file 存在!\n";
}

if (-r $file) {
        print "$file 我有讀取權!\n";
}

if (-w $file) {
        print "$file 我有寫入權!\n";
}

if (-x $file) {
        print "$file 我有執行權!\n";
}

# 取得檔案大小
$file_size = -s $file;

print "$file 的檔案大小為:$file_size\n\n";
這裡有完整的檔案測試函式列表:訪客無法瀏覽此圖片或連結,請先 註冊登入會員

TOP

6.4 刪除檔案
unlink 這個函式可以讓您刪除檔案,唯使用時請三思而後行,以免不小心刪掉重要的資料。用法如下:
引用:
unlink 檔案串列 (至少一個或一個以上)

用例:

#! /usr/bin/perl

$filename="/tmp/test.txt";

system("touch $filename");

sleep 20;

unlink $filename if -e $filename;

if (! -e $filename) { print "$filename 已被刪堙᭚⻠}

TOP

6.5 改變檔名
rename 這個函式可以讓您改變檔案的名稱。用法如下:
引用:
rename("原檔名", "新檔名");

用例:

rename("testdata", "okdata");
注意! 若該新檔名的檔案已存在,則該新檔案的內容,會被原檔案蓋過去!

TOP

6.6 改變檔案權限
chmod 這個函式可以讓您改變檔案的權限屬性。用法如下:
引用:
chmod(權限, 檔案);

用例:

chmod(0755, "file1.txt", "file2.txt");
注意! 作用的檔案數可以一個或一個以上。

TOP

6.7 改變檔案擁有者
chown 這個函式可以讓您改變檔案的擁有者。用法如下:
引用:
chown(使用者,群組, 檔案);

用例:

$uid=500;
$gid=500;
chown($uid, $gid, "file1.txt", "file2.txt");
注意! 作用的檔案數可以一個或一個以上。

TOP

6.8 取得檔案屬性
stat 這個函式可以取得檔案 13 個屬性資料。用法如下:
引用:
$file = "index.html";
@attr=stat($file);

print @attr[4,5], "\n\n";   # 印出 index.html 的 uid, gid
stat 13 個屬性,請參考:訪客無法瀏覽此圖片或連結,請先 註冊登入會員

TOP

6.9 拷貝檔案
使用 File::Copy 這個模組。用法如下:
引用:
#! /usr/bin/perl

use File::Copy;

copy("file1", "file2");

TOP

6.10 目錄處理
以下這個例子(dir.pl)可以將指定的目錄及其下所有子目錄、檔案走訪一次。欲處理的目錄,可在命令列中指定。
引用:
用法:

./dir.pl



./dir.pl /home/jack

====================

#! /usr/bin/perl

use File::Find; # 指揮 perl 至 perl 的主要目錄下尋找 File/Find.pm 這個
                # 模組,引入使用! 其中 :: 相當於 / 這個符號。

$index=1;

# 路徑設定
my $dir=shift || '/home/ols3';

my $tmp="dirlist.txt";

# 開啟記錄暫存檔
open(W, "> $tmp") || die "$!\n";

# 走訪該目錄
find(\&doit, $dir);

close(W);


# 動作區
sub doit {
        print_process_status($index);
        print W "$File::Find::name\n";
        $index++;
}

sub print_process_status {
    my $i=shift;
    my $j = $i % 4;
    SWITCH : {
        $j == 0 && do { print STDERR " (|)\r";  last SWITCH; };
        $j == 1 && do { print STDERR " (/)\r";  last SWITCH; };
        $j == 2 && do { print STDERR " (-)\r";  last SWITCH; };
        $j == 3 && do { print STDERR " (\\)\r"; last SWITCH; };
    }
}

TOP

6.11 開新目錄
Perl 具內建開新目錄的函式 mkdir,用法如下:
引用:
mkdir("/路徑/目錄名稱", 目錄權限屬性);

用例:

#! /usr/bin/perl

print "您要開啟的目錄名稱? ";
chomp($dir=<STDIN>);

mkdir($dir, 0755) || die "$!";

print "$dir 開設完成!\n";

TOP

6.12 刪除目錄
Perl 具內建刪除目錄的函式 rmdir,不過,前提是該欲刪除的目錄要為空目錄才行。用法如下:
引用:
rmdir("/路徑/目錄名稱");

用例:

rmdir("testdir") || die "$!";

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。