2011-06-08 27 views
1

我寫的遍歷目錄中的文件名及其子目錄Pe​​rl腳本,使用下面的方法:如何使用File :: Find跳過.svn文件夾?

find(\&getFile, $mainDir); 

sub getFile { 
    my $file_dir = $File::Find::name; 
    return unless -f $file_dir; # return if its a folder 
} 

文件結構如下所示:

main/classes/pages/filename.php 

然而由於版本控制,每個文件夾和子文件夾都有一個隱藏的.svn目錄,其中每個文件都有一個.svn-base後綴的副本:

main/.svn/classes/pages/filename.php.svn-base 

我不知道是否有一個return語句就像我以前使用的一個:

return if ($file_dir eq "something here"); 

跳過所有.svn文件夾找不到與.svn-base後綴文件名。我一直在擺弄正則表達式,並且尋找幾個小時沒有太多運氣。我只用了幾天的perl。

回答

4

您可以使用

return if ($file_dir !~ /\.svn/); 

!~相當於!($file_dir =~ /\.svn/)=~操作變量比較用圖案。

+0

謝謝,我會給予一個旋轉,我一直困惑的用法這些正則表達式,他們是非常有用的,但有時很難讓我的頭繞在他們的工作方式。感謝一堆快速回復 – Scott 2011-06-08 22:02:53

+0

不客氣! – 2011-06-08 23:41:38

相關問題