Re: [問題] 取得資料夾下的資料夾資料

作者: CindyLinz (Cindy Wang)   2014-10-16 21:45:30
※ 引述《stephen7710 (YA)》之銘言:
: 版友好 小弟新手
: 現有A資料夾 底下有B C D三個資料夾
: 想寫一個可以取得B C D三個資料夾的資料 如owner、group
: 、資料夾名 並且按照修改日期排序
: 原本是有寫一個利用stat取得各資料夾的ctime
: 用 readdir取得資料夾名
: 並且把他們放到hash 並且sort(ctime) 是有成功
: 但因為是用hash 就只能處理資料夾名和日期而已
: 現在有2個問題
: 1.若要多些資料(owner、group)是不是就不能用hash? 因為hash 只有 key和value兩種
: 一個放資料夾名 一個放修改日期就沒了
: 2.stat函數
: ($device, $inode, $mode, $nlink, $uid, $gid, $rdev, $size,
: $atime, $mtime, $ctime, $blksize, $blocks) =
: stat("資料夾名");
: 要怎麼用$uid $gid 取得資料夾的 owner group??
: 參考網頁http://www.perlmonks.org/?node_id=638015
: 還是不行 會取得root 或著syn 怪怪的使用者名
: 我猜是因為他是按照/etc/passwd去找的
: 不過我使用的工作站使用者的uid並沒有記錄在裡面 所以不成功
: 3.除了我想的方法還有甚麼其他方法可以做到我要的目的嗎?
: 謝謝各位了!!!
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 的資料, 那的確還是取不到名字的 @@"

Links booklink

Contact Us: admin [ a t ] ucptt.com