如何使用Perl将txt文件转换为html

问题描述:

我已经运行了一些脚本来使用perl生成存储容量报告和配置设置报告。我想用perl发送这个报告给我的邮件id。如何使用Perl将txt文件转换为html

请注意,我是perl编程的新手。

+0

你的'报告'是怎么样的?可以用表格形式描述的东西?请编辑您的问题,并提供更多信息。 – iMan

+0

您是否尝试将txt文件转换为html或只想发送带有文本文件附件的html电子邮件? – AbhiNickz

+0

你需要分开你的问题,现在还不清楚。你需要1)使用Perl将文本转换为HTML 2)使用Perl将文件发送到电子邮件?那是对的吗? –

你的问题很模糊,所以很难得到很多帮助。这可能会指出你在正确的方向。

这里基本上有三项任务。

  1. 将您的报告解析为数据结构。
  2. 使用您的数据结构来生成HTML文档。
  3. 通过电子邮件发送HTML文档。

我不能真正帮助第1步,因为我对您的报告一无所知。如果您有CSV格式的文件,那么Text:CSV将对您有用。值得指出的是,如果您生成此报告,那么您可以使用更容易解析的格式生成它 - 例如JSON。

对于第2步,我推荐一个模板引擎。我会使用Template Toolkit,但其他选项可用。这个想法是,你创建一个模板文件,其中包含你想要你的可变数据去的“标签”的所有HTML。从简单的层面,可能是这个样子:

<html> 
    <head><title>Some Title</title></head> 
    <body> 
    <h1>Some Title</h1> 
    <p>Blah...</p> 
    <table> 
[% FOREACH row IN data -%] 
     <tr><td>[% row.value %]</td><td>[% row.another_value %]</td></tr> 
[% END -%] 
    <table> 
    </body> 
</html> 

假设是在一个名为email.tt文件,你有你的数据在哈希称为@data的数组,然后你会处理这样的模板:

use Template; 

@data = ({ 
    value => 'something', 
    another_value => 'something else', 
}, { 
    value => 'something', 
    another_value => 'something else', 
}); 

my $tt = Template->new; 

$tt->process('email.tt', { data => \@data }, \$email_body) 
    or die $tt->error; 

这会给你扩展的HTML在$email_body。然后,我们进入第3步。

我建议使用Email::Stuffer发送电子邮件。

use Email::Stuffer; 

Email::Stuffer->from  ('[email protected]') 
       ->to  ('[email protected]') 
       ->html_body($email_body) 
       ->send;