如何递归到多个目录(在 Windows 中)并搜索从特定名称开始的所有字符串。(例如:所有从“perl_”开始的字符串)并将整行复制到一个新文件中。
感谢您的任何指示(现有网站?)
如何递归到多个目录(在 Windows 中)并搜索从特定名称开始的所有字符串。(例如:所有从“perl_”开始的字符串)并将整行复制到一个新文件中。
感谢您的任何指示(现有网站?)
我会从核心 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,它包含在每个发行版中。
对于字符串匹配,如果 Perl 使用和 ruby 一样的正则表达式,我相信是这样,那么你可以使用http://rubular.com/来测试正则表达式。要匹配 Perl 中的正则表达式,请执行此操作
if $string =~ /regular expression/
下面的正则表达式应该匹配 perl_ 在字符串的开头
/^perl_/
为了帮助自己,只需谷歌“regular expressions Perl”或“regex Perl”,您会发现一些有用的网站解释如何在 Perl 中使用正则表达式。
要遍历多个目录,请参阅使用 Perl 自动化系统管理中的第 2 章:文件系统。
我希望这能回答你所有的问题。