亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: 這個目錄遞歸查詢怎么改 [打印本頁]

作者: kggg    時間: 2015-12-04 14:55
標題: 這個目錄遞歸查詢怎么改
請教一下, 下面的腳本一直不成功, 怎么改好?
  1. use strict;
  2. use warnings;
  3. use 5.010;


  4. &diraction('/path/to/dir');


  5. sub diraction{
  6.    my $dir = shift;
  7.    opendir(H, $dir) or die "can't open dir";
  8.    chdir $dir;
  9.    my @info = readdir H;
  10.    closedir H;
  11.    for  (sort @info){
  12.        next if $_ =~ /^(\.|\.\.)/;
  13.        if( -d ){
  14.            diraction($dir."/".$_);
  15.        }
  16.        else
  17.        {
  18.            say $_." is a files";
  19.        }
  20.    }
  21. }
復制代碼

作者: 104359176    時間: 2015-12-04 16:03
目錄遞歸涉及操作系統(tǒng),很多細節(jié),不如用 Perl 自帶的模塊:
  1. use File::Find::Wanted qw(find_wanted);

  2. my @files = find_wanted( sub { -f && /\.jpg$/ }, $dir );
復制代碼

作者: kggg    時間: 2015-12-04 18:55
回復 2# 104359176

謝謝啊,  不知道具體問題出在哪。

有時不方便裝模塊需要用一下自己寫的遞歸。

   
作者: jason680    時間: 2015-12-04 23:03
issue here:
   chdir $dir;
作者: 104359176    時間: 2015-12-05 00:05
回復 3# kggg


如果公司不準裝 Perl 模塊,就用內(nèi)置的隨發(fā)行版一起發(fā)布的模塊: File::Find:

http://perldoc.perl.org/File/Find.html#SEE-ALSO
  1. use File::Find;
  2.     find(\&wanted, @directories_to_search);
  3.     sub wanted { ... }
  4.     use File::Find;
  5.     finddepth(\&wanted, @directories_to_search);
  6.     sub wanted { ... }
  7.     use File::Find;
  8.     find({ wanted => \&process, follow => 1 }, '.');
復制代碼
雖然這個模塊不太好用,但從比自己寫強多了。





歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2