perl - 解析电子邮件消息头的最小程序是什么?

标签 perl email header

作业:http://www.cs.rit.edu/~waw/networks/prob1.082.html

好吧,我仍然很困惑为什么我的数据通信和网络课会问这个问题,但这是我作业中的问题:

  1. Write a computer program that reads the header on an e-mail message and deletes all lines except those that begin with

    From:, To:, Subject: and Cc:.

CONTEST -- Who can write the shortest program that does this.



因此,经过深思熟虑后,我决定以下 Perl 代码尽可能小。
#!/usr/bin/perl

while (<>) { print "$_" if ($_ =~ m/^(To:|From:|Subject:|Cc:)/); }

所有这一切就像一个过滤器,它的唯一输出是问题中指定的以 From:、To:、Subject: 和 Cc: 开头的行。由于没有任何具体细节,我认为上述代码至少可以正确回答问题。

现在,我想知道为此编写的程序可能有多小?我可以理解是否没有人想发布代码,因为他们认为我会在作业中使用它,但我或多或少正在寻找可以帮助我编写尽可能短的程序的建议和技术。

另外,我很确定他指的是实际代码长度。他确实提到脚本语言是要走的路,所以我怀疑他正在考虑诸如解释器所涉及的开销之类的事情。这也意味着他不在乎使用哪种语言。

感谢您的关注!

编辑:感谢您的建议!我在这里阅读问题已经有一段时间了,希望将来我可以做出更多贡献。另外,我将 Perl 代码缩减到 55 字节的一些建议。我认为我们不需要处理多行标题之类的东西。

奖励:在我们讨论包交换和客户端/服务器架构等问题的类里面,谁能找出一个很好的理由提出这个问题?

EDIT2:作为记录,我的教授说有人用 55 字节之类的东西做到了这一点。我认为这是可能的唯一方法是,如果他只是要求像上面那样简单的实现。

最佳答案

一些提示:

  • print "$_"等于 print
  • while(<>) {...} 可以通过在 #! 上的选项中添加 -n 来替换行/
  • $_ =~ m//等于//
  • 您正在输入四个 :是一个足够好的地方。

  • 就像是
    #!/usr/bin/perl -n
    print if /^(To|From|Subject|Cc):/;
    

    关于perl - 解析电子邮件消息头的最小程序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/372721/

    相关文章:

    email - Jenkins 附件-语法是什么?

    javascript - 如何在 Node js 中循环异步发送批量邮件?

    image - 单击打开用户邮件的图像,将其发送到我的电子邮件地址

    perl - 如何使用 DBIx::Class 进行子选择?

    perl - 如何让 perl Makefile.PL 在编译 XS 模块时使用给定的 C 编译器?

    c - 无法在头文件中找到结构体

    php - PHP 是否可以在每个 Javascript History.go(-1) 上生成一个新页面?

    css - 如何使我的顶部栏元素在响应式中可点击?

    Perl 5.8.8 - Curses 界面 - 多选 - 这可能吗?

    perl - 如何将 Perl 代码标记为已弃用?