我有一个Perl脚本,使用File::Next::files遍历目录层次结构。 它只会将以".avi"、".flv"、".mp3"、".mp4"和".wmv"结尾的文件返回给脚本。 此外,它将跳过以下子目录:".svn"和任何以".frames"结尾的子目录。 这在下面的file_filter
和descend_filter
子例程中指定。
my $iter = File::Next::files(
{ file_filter => \&file_filter, descend_filter => \&descend_filter },
$directory );
sub file_filter {
# Called from File::Next:files.
# Only select video files that end with the following extensions.
/.(avi|flv|mp3|mp4|wmv)$/
}
sub descend_filter {
# Called from File::Next:files.
# Skip subfolders that either end in ".frames" or are named the following:
$File::Next::dir !~ /.frames$|^.svn$/
}
我想做的是将允许的文件扩展名和禁止的子目录名称放在配置文件中,以便可以随时更新。
我想知道的是如何编写子程序来基于配置文件中的参数构建正则表达式?
/.(avi|flv|mp3|mp4|wmv)$/
$File::Next::dir !~ /.frames$|^.svn$/