看板 Perl 關於我們 聯絡資訊
※ 引述《stephen7710 (YA)》之銘言: : 謝謝你的回答 : 我把ctime放到 %hash的key 資料夾名放到value : 然後 : foreach $time(sort keys %hash ) : { : print("$time, $hash{"$time"}\n"); : } : 類似這樣 可能有些語法有錯請見諒 : 因為取得的ctime是位數的數字ex 1000000000 : 所以可以這樣排 之後再用localtime轉換 拿 $time 當成 hash key 的話, 萬一有同一秒的不同檔案, 這 hash 裡面只會存有其中一個欸 @@" 我會想把它們放在 array of array 或 array of hash 裡面, 例如說.. (這邊是用 array of hash) my @files; ... while( ... ) { my @stat = stat $filename; push @files, { filename => $filename, ctime => $stat[10], mtime => $stat[9], uid => $stat[4], gid => $stat[5], }; } 然後排序輸出的地方就.. (假設先以 mtime 排序, mtime 一樣時改以 filename 排序) for my $file ( sort { $a->{mtime} <=> $b->{mtime} || $a->{filename} cmp $b->{filename} } @files ) { print "$file->{filename}: mtime=$file->{mtime}, ctime=$file->{ctime}\n"; } : 我記得我是用my $user_name = getpwuid($uid); : print 出來的 $uid 是0或1或2之類的 : 然後去/etc/passwd 看確實對應的就是root那些的 : 不過並不是我ls看到的owner : /etc/passwd 下也沒有一般的使用者列表 : 謝謝 真神祕, 不知道你 ls 看到的 owner 是怎麼來的.. 這個偏系統管理, 作業系統設計的問題, 我就沒那麼熟了 @@" 要不要再檢查一下是不是 $uid 對錯欄位, 可能對到 nlink 或 rdev 了? ^^| : ※ 引述《CindyLinz (Cindy Wang)》之銘言: : : 1. 能不能多講一下這個對 hash 排序指的是什麼? : : 我以為 hash 是讓我們由 key 取得對應的 value, : : 沒有看出什麼可以控制順序的地方 @@" : : 2. 的確是用 getpwuid 和 getgrgid, : : my $user_name = getpwuid($uid); : : my $group_name = getgrgid($gid); : : 然後再拿 $user_name 和 $group_name 去用.. : : 我猜你可能用到了 getpwuid($uid) 的 list context 用法.. 像是 : : my @user_data = getpwuid($uid); : : 這樣拿到的 @user_data 陣列裡面的資料是 : : ($name,$passwd,$uid,$gid,$quota,$comment,$gcos,$dir,$shell,$expire) : : 然後直接把整個陣列印出來了.. : : 可以看一下 perldoc -f getpwuid 的說明~ : : 當然, 如果 server 上真的沒有存著這一筆 uid 的資料, 那的確還是取不到名字的 @@" -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.121.80.249 ※ 文章網址: http://www.ptt.cc/bbs/Perl/M.1413470867.A.F15.html