免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2417 | 回复: 4
打印 上一主题 下一主题

关于确认目录或文件的一个奇怪问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-18 09:53 |只看该作者 |倒序浏览
5可用积分
看代码及其注释,为什么perl不能准确确定谁是目录,谁是文件呢?我用的是ActivePerl,在Linux下试了,效果更糟。是我哪里写错了吗?
谢谢!

# 在当前工作目录下建立一个文件夹A,在A下建立3个空文件夹a,b,c

use strict;

listdir($ARGV[0]);

sub listdir
{
        my ($dir1) = (@_);
       
        my (@fileA, @dirA);
        my ($item, @allitems);
       
        # 将dir1中的文件和目录分别存入fileA数组和dirA数组
        if(!opendir(DIR1,$dir1))
        {
         warn "Can not open $dir1. $!\n";
         return;
        }
       
        @allitems=grep(!/^\.\.?$/,readdir(DIR1)); #remove "." and ".."
        print "@allitems\n"; # a b c
       
        foreach(@allitems)
        {
                $item=$_;       
               
                if(-d $item)
                {
                        # $item=join('\\',($dir1,$item)); #$item is the whole path , it is very important
                        push(@dirA, $item);
                }
                if(-f $item) # 若使用这一句,最终打印出:dirA: a b fileA:
                # else # 若使用这一句,最终打印出:dirA: a b fileA: c
                {
                  push(@fileA, $item);
                }
        }       
       
        print "dirA: @dirA\n";
        print "fileA: @fileA\n";
       
        return;
}

最佳答案

查看完整内容

改为if(-d "$dir1/$item")if(-f "$dir1/$item")试试。不行就用完整路径

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
2 [报告]
发表于 2008-11-18 09:53 |只看该作者
改为
if(-d "$dir1/$item")
if(-f "$dir1/$item")
试试。不行就用完整路径

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
3 [报告]
发表于 2008-11-18 10:10 |只看该作者
原帖由 finixlei 于 2008-11-18 09:53 发表
看代码及其注释,为什么perl不能准确确定谁是目录,谁是文件呢?我用的是ActivePerl,在Linux下试了,效果更糟。是我哪里写错了吗?
谢谢!

# 在当前工作目录下建立一个文件夹A,在A下建立3个空文件夹a,b, ...

(-d $item)
(-f $item)
这个需要带路径。

论坛徽章:
0
4 [报告]
发表于 2008-11-18 10:20 |只看该作者
删掉...
已经有人答了

论坛徽章:
0
5 [报告]
发表于 2008-11-18 10:58 |只看该作者
我晕,果然如此简单,谢谢光明使者!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP