Chinaunix

标题: 请教判断目录的写法 [打印本页]

作者: db2_aixer    时间: 2012-10-16 14:47
标题: 请教判断目录的写法
小弟新手 准备实现个小需求。我要取出某个目录的里面一些子目录名,比如:/home/oracle下的 a1 a2 a3 个目录,如果/home/oracle里面还含有文件名和目录名相同,我就只打印出目录名 我的写法:
opendir(TMP,'/home/oracle') || die "re";
@d=grep(/a[0-9]$/,readdir TMP);
foreach (@d){
  if( -d $_ ){
    print "$_";
  }  
}
运行什么都没有,请教下改怎样处理,谢谢


作者: kk861123    时间: 2012-10-16 15:00
回复 1# db2_aixer


    请使用绝对路径:
  1.   if( -d "/home/oracle/$_" ){
  2.     print "$_";
  3.   }  
复制代码

作者: db2_aixer    时间: 2012-10-16 15:05
感谢kk861123回复  可以了 学习了
作者: jason680    时间: 2012-10-16 15:10
本帖最后由 jason680 于 2012-10-16 15:11 编辑

回复 1# db2_aixer

perldoc -f readdir
               ...
               If you're planning to filetest the return values out of a
               "readdir", you'd better prepend the directory in question.
               Otherwise, because we didn't "chdir" there, it would have been
               testing the wrong file.


                   opendir(my $dh, $some_dir) || die "can't opendir $some_dir: $!";
                   @dots = grep { /^\./ && -f "$some_dir/$_" } readdir($dh);
                   closedir $dh;

作者: frankhyk    时间: 2012-10-18 11:04
为什么要特意写一下"$_",默认的不就是对它操作吗?去掉"$_"就可以了吧。
作者: 斯文牛氓    时间: 2012-10-19 10:49
回复 5# frankhyk


    怕你看不懂把




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2