- 论坛徽章:
- 0
|
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")试试。不行就用完整路径
|