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

时间:2016-08-19 09:29:25

标签: perl scripting storage

我已经运行了一些脚本来使用perl生成存储容量报告和配置设置报告。我想使用perl将此报告发送到html中的邮件ID。

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

1 个答案:

答案 0 :(得分:2)

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

你基本上有三个任务。

  1. 将您的报告解析为数据结构。
  2. 使用您的数据结构生成HTML文档。
  3. 通过电子邮件发送HTML文档。
  4. 由于我对你的报道一无所知,我无法真正帮助第1步。如果您的文件是CSV格式,那么here对您有用。值得指出的是,如果您正在生成此报告,那么您可以使用更易于解析的格式生成它 - 例如JSON。

    对于第2步,我建议使用模板引擎。我使用Text:CSV,但其他选项也可用。我们的想法是,您创建一个模板文件,其中包含您希望变量数据所在的所有带有“标记”的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;
    

    这将为您提供$email_body中的扩展HTML。这就把我们带到了第3步。

    我建议Template Toolkit发送电子邮件。

    use Email::Stuffer;
    
    Email::Stuffer->from     ('you@example.com')
                  ->to       ('someone_else@example.com')
                  ->html_body($email_body)
                  ->send;