如何递归到多个目录(在Windows中)并搜索从特定名称开始的所有字符串。 (例如:从&#34开始的所有字符串; perl _")并将整行复制到新文件中。
感谢任何指针(现有网站?)
答案 0 :(得分:1)
我将从核心Perl发行版的File::Find开始:
use strict;
use warnings;
use File::Find;
my $starting_path = '/path/to/begin/searching';
open my $output, '>', 'output.txt' or die $!;
find(
sub {
return unless -e -f;
if ( open my $infile, '<', $_ ) {
while ( my $line = <$infile> ) {
print $output $line if $line =~ m/^perl_/;
}
}
else {
warn "$_ couldn't be opened: $!";
}
},
$starting_path
);
close $output or die $!;
如果您需要有关制作搜索模式的其他帮助,请参阅每个发行版附带的Perl POD(Perl文档)中的perlretut和perlre。
答案 1 :(得分:-1)
对于字符串匹配,如果Perl使用与ruby相同的正则表达式,我相信它确实如此,那么您可以使用http://rubular.com/来测试正则表达式。要匹配Perl中的正则表达式,请执行此操作
if $string =~ /regular expression/
下面的正则表达式应该匹配字符串
的perl_/^perl_/
为了帮助自己只使用Google“正则表达式Perl”或“regex Perl”,您会找到一些有用的网站,解释如何在Perl中使用正则表达式。
要遍历多个目录,请参阅Automating System Administration with Perl中的第2章:文件系统。
我希望这能解答你所有的问题。