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