【问题标题】:How to convert txt file to html using perl如何使用perl将txt文件转换为html
【发布时间】:2016-12-26 09:55:06
【问题描述】:

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

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

【问题讨论】:

  • 您的“报告”看起来如何?可以用表格格式描述的东西?请用更多信息编辑您的问题。
  • 您是想将 txt 文件转换为 html 还是只想发送带有文本文件附件的 html 电子邮件?
  • 你需要把你的问题分开,现在还不清楚。您需要 1) 使用 perl 将文本转换为 html 2) 使用 perl 将文件发送到电子邮件?对吗?
  • @john doe,是的,你是对的,我需要使用 perl 将文本转换为 html 并使用 perl 将文件发送到电子邮件。
  • @iMan,是的,我的报告是表格格式。

标签: perl scripting storage


【解决方案1】:

您的问题非常模糊,因此很难提供太多帮助。不过,这可能会为您指明正确的方向。

你在这里基本上有三个任务。

  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;

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

我推荐Email::Stuffer 发送电子邮件。

use Email::Stuffer;

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

【讨论】:

    猜你喜欢
    • 2017-07-13
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2012-02-08
    • 2010-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多