Re: [问题] 取得资料夹下的资料夹资料

楼主: CindyLinz (Cindy Wang)   2014-10-16 22:47:44
※ 引述《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 的资料, 那的确还是取不到名字的 @@"

Links booklink

Contact Us: admin [ a t ] ucptt.com