Perl - 如何抓取目录,解析目录中的每个文件并将所有注释解压缩到html文件

时间:2011-04-05 22:55:11

标签: perl

我需要一些严肃的帮助,我是perl的新手,需要有关如何创建perl脚本的帮助,该脚本会提示用户输入包含perl文件的目录,解析该目录中的每个文件,然后从每个文件中提取所有注释文件到单个html文件。

代码示例或已经执行此操作的现有模块会很棒。

谢谢!

3 个答案:

答案 0 :(得分:1)

PPI可用于解析Perl代码文件。这应该让您开始在目录中获取Perl文件(假设它们有.pl个扩展名)并抓住注释。我不确定你对HTML文章的意思:

use warnings;
use strict;
use PPI;

my $dir = shift;
for my $file (glob "$dir/*.pl") {
    my $doc = PPI::Document->new($file);
    for my $com (@{ $doc->find('PPI::Token::Comment') }) {
        print $com->{content};
    }
}

更新:查看HTML::Template(但可能有点矫枉过正)。

答案 1 :(得分:0)

使用关键字“dir”进行的简单cpan搜索显示了大量有用的模块。我经常使用的一个是:

IO::Dir

答案 2 :(得分:0)

如果您有选择,这是一个Ruby脚本

#!/usr/bin/env ruby 
print "Enter directory: "
directory=File.join(gets.chomp,"*.pl")
directory="/home/yhlee/test/ruby/*.pl"
c=0
Dir[directory].each do |file|
    c+=1
    o = File.open("file_#{c}.html","w")
    File.open(file).each do |line|
        if line[/#/]
            o.write ( line.scan(/;*\s+(#.*)$/)[0].first + "\n" ) if line[/;*\s+#/]
            o.write ( line.scan(/^\s+(#.*)$/)[0].first + "\n") if line[/^\s+#/]
        end
    end
    o.close
end