从包含PERL的.txt文件的目录中剥离HTML

时间:2012-08-02 15:20:59

标签: perl

我是一个完整的n00b。我已阅读本网站上的许多其他帖子,但我无法找到解决这个相对简单问题的方法。基本上,我有一个用HTML标记的文本文件目录。我想从此目录中的每个文件中删除HTML,然后将每个单独的文件导出到新的文本文件(最好使用_out.txt扩展名)。这是我到目前为止所尝试的:

use strict;
use warnings;
use File::Find;
use HTML::FormatText;


my $root_path=qq{C:\\Filings\\test}; #Declare your input path
# Recursively it process all the sub directories in $root_path
find(\&process_multiple_dir, $root_path);
sub process_multiple_dir
{
    if (-f && $File::Find::name =~ m{\.txt$}) # It process .txt format files only
    {
          undef $/; # Input Record separator
          # Files Handling process
          open (FIN, "<$File::Find::name") || die "Cannot Open the Input file";
          my $file=<FIN>; # Assign the file handler to scalar variable
          #print $file;

          my $string = HTML::FormatText->format_file($file,leftmargin => 0, rightmargin => 50);
          #print $string;
          close (FIN);
          # Change the file name for the output file creation purpose
          $File::Find::name=~ s{\.txt}{_Out.txt};


          # Print the $file contents to new file
          open (FOUT, ">$File::Find::name") || die "Cannot Create the Output file";
          print FOUT $string;
          close (FOUT);
      }
}

此代码将输出一个带有新文件名的文件(标记为_out.txt的扩展名),但新创建的文件中没有文本...

谢谢!

1 个答案:

答案 0 :(得分:1)

我自己不使用HTML :: FormatText,但我认为正确的语法是:

my $string = HTML::FormatText->format_file($File::Find::name,leftmargin => 0, rightmargin => 50);

因此无需打开文件并将其粘贴到$file

(PS:在你的代码中使用一些缩进;它使它更具可读性:))