我有一个看起来像这样的文件: cat output_title.txt
C817491287 Cat: Nor Sus: something date: 02/26/14
C858151287 Cat: Nor Sus: really something date: 02/26/14
我想使用文件中的参数发送HTML格式的电子邮件,例如
mine :firstparamter starting with C
sus: ?
date: ?
我该怎么做?
编辑:代码
open (FILE, 'output_title.txt');
while (<FILE>) {
chomp;
($chg, $Cat, $category, $sta, $stus, $sus, $open, $open_date) = split(" ");
print "Chnge is:$chg\n";
}
在doncoyote评论之后:
use strict;
use warnings;
open (FILE, 'output_title.txt');
while (<FILE>) {
my ($Cnum,$Cat,$Sus,$Date) = m!(C\d{9})\s+Cat:\s+(\w+)\s+Sus:\s([\w\s]*?)date:\s+([\d/]+)$! ;
print "Cnum:$Cnum\t";
print "Caty:$Cat\t";
print "Stus:$Sus\t";
print "opendate:$Date\n";
}
close (FILE); exit;
答案 0 :(得分:1)
当提取文本中存在轻微但可量化的差异时,您可能会发现正则表达式模式捕获以定义所需变量比分割更好。 这样的事情应该处理提供的案例。这可以改进,但是我的头脑中的起点很好。
my ( $Cnum, $Cat, $Sus, $Date )
= m!(C\d{9})\s+Cat:\s+(\w+)\s+Sus:\s([\w\s]*?)date:\s+([\d/]+)$!
您应该开始研究perlretut文档中的正则表达式,以了解正在发生的事情。基本上,转义字母w,d,s分别代表字数和不可打印字符(空格,制表符)。括号捕获模式并将其作为列表传递给赋值变量。方括号定义了多个字符选择。
量词:+是一个或多个,*是零或更多,花括号是以逗号分隔的指定最小值/最大值。他们紧接着的每一个角色。问号是非贪婪的*而$是行锚的结束。
答案 1 :(得分:0)
我非常确定有几种方法可以从perl发送html邮件。
例如:
use MIME::Lite;
my $msg = MIME::Lite->new(
From => from_you@somedomain.com,
To => to_someone_else@someotherdomain.com,
Subject => "your mail subject",
Type => 'text/html',
Data => qq {
<body>
<table>
<tr> <td>$chg</td><td>$Cat</td>.....</tr>
</table>
</body>
},
);
$msg->send();