搜索关键字并使用perl将整行复制到新文件

时间:2012-06-06 05:57:12

标签: perl search automation

如何递归到多个目录(在Windows中)并搜索从特定名称开始的所有字符串。 (例如:从&#34开始的所有字符串; perl _")并将整行复制到新文件中。

感谢任何指针(现有网站?)

2 个答案:

答案 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文档)中的perlretutperlre

答案 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章:文件系统

我希望这能解答你所有的问题。