作业:http://www.cs.rit.edu/~waw/networks/prob1.082.html
好吧,我仍然很困惑为什么我的数据通信和网络课会问这个问题,但这是我作业中的问题:
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
#!
上的选项中添加 -n 来替换行/:
是一个足够好的地方。 就像是
#!/usr/bin/perl -n
print if /^(To|From|Subject|Cc):/;
关于perl - 解析电子邮件消息头的最小程序是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/372721/