Как пропустить папки .svn с помощью File :: Find? - PullRequest
1 голос
/ 09 июня 2011

Я пишу Perl-скрипт, который перебирает имена файлов в каталоге и его подкаталогах, используя следующий метод:

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 только пару дней.

1 Ответ

4 голосов
/ 09 июня 2011

Вы можете использовать

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

(!~ эквивалентно !($file_dir =~ /\.svn/). Оператор =~ сравнивает переменную с шаблоном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...