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

Chinaunix

標(biāo)題: 求教探索File::Find模塊的深度使用,如過(guò)濾文件 [打印本頁(yè)]

作者: pigkingone    時(shí)間: 2013-10-01 18:30
標(biāo)題: 求教探索File::Find模塊的深度使用,如過(guò)濾文件
perl中有個(gè)模塊,F(xiàn)ile::Find,搜索目錄,文件用的。平時(shí)很好用。最近突然思考了一個(gè)問(wèn)題,始終理解不透徹。希望大牛幫忙解析:

代碼目的:
       假設(shè)目錄文件量非常大,想提高掃描效率。
工作目標(biāo):
       有的目錄明確知道不需要掃描。我該如何才能排除他們。不是簡(jiǎn)單的不打印出結(jié)果,而是實(shí)實(shí)在在的不去read這個(gè)目錄?

我看了下這個(gè)模塊,暫時(shí)看到 兩種方法的可能性,我試驗(yàn)了第一種,失敗了。。。不知道我哪里理解錯(cuò)了?
順帶第二種我也沒(méi)信心了,請(qǐng)大家?guī)兔纯次业拇a有什么問(wèn)題,有什么處理的好方法。

代碼:
use 5.010;
use File::Find;

$path=`cd`;
chomp $path;
$option{wanted}=\&want;
$option{untaint}=1;
$option{untaint_skip}=1;
$option{untaint_pattern}=qr\web2$\;            #這個(gè)匹配,到底是符合規(guī)則的才處理,還是符合規(guī)則的不處理,應(yīng)該怎么寫(xiě)?這個(gè)參數(shù)我
                                                                   #無(wú)論怎么改都沒(méi)有起到作用,比如我目錄下有個(gè)子目錄web2,照樣打印出來(lái)了,包括web2的子目錄和文件。。。。why。。。
find(\%option,$path);
sub want{
        say $File::Find::name;
}

第二個(gè)方法,是prepross,這個(gè)我只在網(wǎng)上看了有人提到,具體方法和效果也不太理解?
請(qǐng)大牛們幫忙救救。。。。
作者: wenhq    時(shí)間: 2013-10-01 22:00
next if -d $name ;
作者: pigkingone    時(shí)間: 2013-10-01 22:02
回復(fù) 2# wenhq


    在什么參數(shù)下,什么位置寫(xiě)呢?
    我想要的不只是打印結(jié)果,而是實(shí)實(shí)在在的,不去掃描某子目錄下的文件。
作者: wenhq    時(shí)間: 2013-10-01 22:04
看下perl 進(jìn)階 第7章 :File::Find
作者: pigkingone    時(shí)間: 2013-10-01 22:44
回復(fù) 4# wenhq


    是intermediate perl嗎?我搜了沒(méi)有untaint_pattern等關(guān)鍵字。磕芴峁└敿(xì)的信息嗎,謝謝啦。
作者: wenhq    時(shí)間: 2013-10-02 08:11
是講這個(gè)模塊的呀!
作者: pigkingone    時(shí)間: 2013-10-02 12:10
回復(fù) 6# wenhq


    因?yàn)槭怯⑽牡模掖蟾艗吡讼,外加搜索了下我使用的關(guān)鍵參數(shù)。是有將,但是好像沒(méi)有我的代碼中的相關(guān)參數(shù)?
作者: pigkingone    時(shí)間: 2013-10-02 21:13
自己再頂一下。。。
作者: 104359176    時(shí)間: 2013-10-03 20:43
這個(gè)模塊不好用,初學(xué)者建議使用  File::Find::Wanted   中提供的簡(jiǎn)單接口。 find_wanted
  1. To get a list of all files ending in .jpg:

  2.     my @files = find_wanted( sub { -f && /\.jpg$/ }, $dir );
  3. For a list of all directories that are not CVS or .svn:

  4.     my @files = find_wanted( sub { -d && !/^(CVS|\.svn)$/ }, $dir ) );
  5. It's easy, direct, and simple.

  6. WHY DO THIS? ^

  7. The cynical may say "that's just the same as doing this":

  8.     my @files;
  9.     find( sub { push @files, $File::Find::name if -f && /\.jpg$/ }, $dir );
復(fù)制代碼

作者: dqw233    時(shí)間: 2013-10-08 01:14
use 5.010;
use File::Find;

sub want{
        say $File::Find::name;
}

$File::Find::skip_pattern = qr/$File::Find::skip_pattern | web2/x; #可以修改skip_pattern,注意加上它的默認(rèn)值。
find(\&want, '.');

作者: dqw233    時(shí)間: 2013-10-08 01:15
回復(fù) 1# pigkingone
  1. use 5.010;
  2. use File::Find;

  3. sub want{
  4.         say $File::Find::name;
  5. }
  6.                         
  7. $File::Find::skip_pattern = qr/$File::Find::skip_pattern | web2/x;
  8. find(\&want, '.');
復(fù)制代碼

作者: pigkingone    時(shí)間: 2014-08-14 15:32
skip_pattern方法沒(méi)有試過(guò)。
不過(guò)我發(fā)現(xiàn)prepross這個(gè)option參數(shù)設(shè)置一個(gè)回調(diào)函數(shù)。這個(gè)函數(shù)中過(guò)濾不需要的。retrun需要處理的目標(biāo)的數(shù)組就可以了。
看上去這個(gè)應(yīng)該是起作用了。分享之。
目錄多的情況下,還是有意義的




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