+ -
当前位置:首页 → 问答吧 → 求帮助,关于perl递归处理ftp 的问题 。。。

求帮助,关于perl递归处理ftp 的问题 。。。

时间:2010-11-04

来源:互联网

本帖最后由 jiannma 于 2010-11-04 14:51 编辑

具体问题如下:

递归的列出ftp目录里面的文件,如果有子目录,进入它并把里面的文件列出来:

效果如下:



QUOTE:
/dir1
    /sub-dir1
     test1

/dir2
   /sub-dir2  
                 test2

/dir3

  /sub-dir3
              test3
...





下面是我自己尝试写的脚本:
  1. #!/usr/bin/perl

  2. use strict;
  3. use Net::FTP;

  4. my $host = "xxx.xxx.xx.xx";
  5. my $user = "test";
  6. my $pass = "xxx";

  7. print "Connecting to FTP Server ..."

  8. my $ftp = Net::FTP->new($host)
  9.              or die "Cannot connect the ftp server";

  10. $ftp->login ("$user", "$pass")
  11.                 or die "Cannot login" , $ftp->message;

  12. print "Logged in ...";

  13. $ftp->cwd ("/");

  14. my @dirs = $ftp->ls ('-l');

  15. sub if _a_dir {
  16.           my $dir = $_[0];

  17.              if ($dir  =~ m/^d/){
  18.                      [color=Red]   $ftp->cwd("$dir") or die "Error"[/color];

  19. ....  (未完成)
  20. }

  21. foreach my $sub_dir (@dirs){
  22. &if_a_dir ($sub_dir);
  23. }

  24. $ftp->quit();
复制代码
在递归处理ftp目录下出现了问题, 不明白红色部分为什么不对呢?或者说怎能够正确递归目录呢?谢谢。。

作者: jiannma   发布时间: 2010-11-04

本帖最后由 zhlong8 于 2010-11-04 14:53 编辑

还真没看出来你的递归在哪

怎么判断是不是 dir 的?

作者: zhlong8   发布时间: 2010-11-04

本帖最后由 jiannma 于 2010-11-04 14:56 编辑

回复 zhlong8


    可能描述不清楚,思路是这样的, 就是首先列出ftp里面的目录列表,如:

dir1
dir2
dir3

然后分别进入其中,如果有子目录,然后再列出:
dir1/sub-dir1
dir2/sub-dir2
dir3/sub-dir3

最后列出子目录下面的文件:
dir1/sub-dir1/test1
dir2/sub-dir2/test2
dir3/sub-dir3/test3

作者: jiannma   发布时间: 2010-11-04