无法使用Perl以递归方式读取目录中的文件? [英] Unable to read the files recursively inside the directories using Perl?

查看:79
本文介绍了无法使用Perl以递归方式读取目录中的文件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

无法在目录中递归读取文件。这里$ dir1是具有递归任务的文件名的目录。我想删除那些以递归方式启动的文件。我该怎么办?



错误:



Am unable to read the files recursively inside the directories.Here $dir1 is the directory which has the file names with task recursively.I want to remove those files which starts with task recursively.How can i do it?

Error:

Use of uninitialized value in pattern match (m//) at ./generate_dcms_html.pl





我的input_Directory结构:





My input_Directory struture:

`-- added
   |-- add.txt
   `-- added1
       |--action
       |   |-- action.txt
       |   `-- task1
       |   |    `-- task1.html
       |   `-- task2
       |       `-- task1.html

       `-- add.html





预计:< br $>




Expected:

`-- added
   |-- add.txt
   `-- added1
       |--action
       |   |-- action.txt
       |   `-- task2
       |       `-- task2.html

       `-- add.html





我尝试了什么:





What I have tried:

sub ProcessDirectory1{
    my ($workdir1) = shift;
 	unless (-d $workdir1)
    {
        warn "argument to DelTask is not a directory.\n";
        return;
    }
    my @dirs1 =  glob "$workdir1/*";

    foreach my $f (@dirs1)
    {
    	my $dirs1=basename($f);
    	{
        if (my $dirs1 =~ /^task/)
        {
          my $filemask1 = $f.'/*';
          print $filemask1;
          unlink glob $filemask1;
          unlink $f;          
        }

        
    }
}
}
ProcessDirectory1($output_dir);

推荐答案

dir1是递归执行任务的文件名的目录。我想删除那些以递归方式启动的文件。我该怎么办?



错误:



dir1 is the directory which has the file names with task recursively.I want to remove those files which starts with task recursively.How can i do it?

Error:

Use of uninitialized value in pattern match (m//) at ./generate_dcms_html.pl





我的input_Directory结构:





My input_Directory struture:

`-- added
   |-- add.txt
   `-- added1
       |--action
       |   |-- action.txt
       |   `-- task1
       |   |    `-- task1.html
       |   `-- task2
       |       `-- task1.html

       `-- add.html





预计:< br $>




Expected:

`-- added
   |-- add.txt
   `-- added1
       |--action
       |   |-- action.txt
       |   `-- task2
       |       `-- task2.html

       `-- add.html





我尝试过:





What I have tried:

sub ProcessDirectory1{
    my (


workdir1)= shift;
除非(-d
workdir1) = shift; unless (-d


workdir1)
{
warnDelTask​​的参数不是目录。\ n;
返回;
}
我的@dirs1 = glob
workdir1) { warn "argument to DelTask is not a directory.\n"; return; } my @dirs1 = glob "


这篇关于无法使用Perl以递归方式读取目录中的文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆