檔案與目標操作

2021-06-07 16:35:58 字數 1667 閱讀 7518

-- start

有時候我們需要判斷某個檔案是否存在,很簡單,使用 -e 即可,下面是乙個簡單例子。

#!/usr/bin/perl

print "請輸入路徑和檔名:\n";

chomp (my $file = );

if(! -e "$file")

除此之外,我們還可以通過下面的操作符來測試檔案的其他屬性。

檔案測試操作符

意義

-r檔案或目錄,對當前使用者或組來說是可讀的

-w檔案或目錄,對當前使用者或組來說是可寫的

-x檔案或目錄,對當前使用者或組來說是可執行的

-o檔案或目錄,由當前使用者擁有

-r檔案或目錄,對實際的使用者或組來說是可讀的

-w檔案或目錄,對實際的使用者或組來說是可寫的

-x檔案或目錄,對實際的使用者或組來說是可執行的

-o檔案或目錄,由實際的使用者擁有

-e檔案或目錄,是否存在

-z是否為空檔案

-s返回檔案或目錄的大小

-f是否為普通檔案

-d是否為目錄

-l是否為符號鏈結

-s是否為socket

-p是否為管道

-b是否為塊裝置

-c是否為字元裝置

-u是否設定了setuid位

-g是否設定了setgid位

-k是否設定了sticky位

-t是否表示終端

-t是否為文字檔案

-b是否為二進位制檔案

-m距上次修改的天數

-a距上次訪問的天數

-c距上次訪問檔案的inode的天數

事實上,檔案還有許多其他屬性,遺憾的是它們沒有對應的測試操作符,幸運的是我們可以通過函式 stat 來取得這些屬性,有關 stat 的更詳細介紹請參見此處

下面是乙個對檔案操作的簡單例子。

#!/usr/bin/perl

# 從當前目錄找到所有的***檔案

my @files=glob "*.***"; # 方式 1

foreach my $file (@files)

# 從當前目錄找到所有的log檔案

my @files=<*.log>; # 方式 2

foreach my $file (@files)

在 perl 中,我們可以通過檔案控制代碼來操作乙個檔案,事實上,我們也可以通過目錄控制代碼來操作目錄,下面是乙個簡單的例子。

#!/usr/bin/perl

print "請指定乙個目錄:\n";

chomp (my $path = );

# 開啟目錄控制代碼

opendir dir, $path or die "$!";

# 檢視目錄中的子目錄及檔案

foreach my $file (readdir dir)

# 關閉目錄控制代碼

closedir dir;

-- 更多參見:perl 精萃

-- last updated on 2012-07-12

-- written by shangbo on 2012-07-11

-- end

目標檔案裡有什麼 揭秘目標檔案

程式源 被編譯後生成的機器指令被放在 段 text 全域性變數和區域性靜態變數被放在資料段 data 除此之外還有程式裡邊的唯讀變數 如const修飾的變數 和字串常量被分配在唯讀資料段 rodata 注釋資訊段 comment 堆疊提示段 nute.gnu stack 未初始化的全域性變數和靜態區...

鏈結 裝載與庫 目標檔案(1)

一直被催更。pc平台流行的可執行檔案格式 executable 主要為windows下的pe portableexecutable 和linux下的elf executable linkableformat 都是coff common file format 格式的變種。編譯器編譯源 後生成的目標檔...

鏈結 裝載與庫 目標檔案(3)

總結的速度,追不上看書的速度了。elf檔案的基本結構是什麼樣子?elf目標檔案的最前部是elf檔案頭 elf header 其包含描述整個檔案的基本屬性,如elf檔案版本 目標機器型號 程式入口位址等。接著是各段。之後為段表 section header table 該錶描述了elf檔案包含的所有段...