我希望在网络前端完成一些工作,ping局域网上的众多计算机并检索有关响应时间的数据。哪个是最有用和最有效的:Perl或Python?
答案 0 :(得分:22)
我同意你使用的编程语言非常主观 - 基本上我宁愿尽可能快速有效地完成工作,这使得它可以支持 - 所以这取决于你的基础设施......
我可以建议您查看Nagios而不是自己重新发明轮子吗?
虽然Nagios可能需要在配置方面有更大的学习曲线,但从长远来看它是值得的,如果你找不到符合你要求的插件,那么你可以很容易地编写自己的插件。 Joel Spolsky撰写了一篇有趣的文章。
答案 1 :(得分:14)
好吧,我在Perl和Python工作,我的日常工作是支持网络监控软件。大多数进口点已经涵盖,但我将在此巩固/重申:
不要重新发明轮子 - 有许多网络监控解决方案可用于执行ping测试和分析收集的数据。参见例如
如果您坚持自己这样做,可以在Perl或Python中完成 - 使用您最熟悉的那个。如果您计划解析大量文本,那么在Perl中执行“快速和脏”将比在Python中更容易。两者都可以做到,但Python需要一种OOP方法,它就不像Perl的内联正则表达式语法那么容易。
使用库 - 许多人已经完成了这项任务,所以在你周围寻找合适的lib,如Perl中的Net :: Ping或Python中的icmplib或this ping.py代码。
使用线程或异步ping - 否则ping将永远占用,例如,请参阅this recipe使用线程同时运行ping。使用这两种方法在Python中都很容易做到这一点,因此Python使用IMO比使用Perl更容易使用。
答案 2 :(得分:12)
使用Perl。
您可以访问一个不错的Ping对象Net::Ping,并将结果存储在数据库中非常简单。
答案 3 :(得分:7)
任何一个都应该工作得很好。如果你没有经验,可以掷硬币。没有语言具有内在的生产力;语言使人们富有成效。不同的人将受益于不同的语言。
一般而言,当您知道自己的具体任务并需要选择工具时,请寻找能让您的生活轻松的图书馆。对于Perl,请查看Comprehensive Perl Archive Network。每个网络都有可能需要的模块。
Python可能有非常相似的工具和库;我只是不知道它们是什么。
答案 4 :(得分:3)
我比Python更了解Perl,所以我的选择将落在Perl上。也就是说,我认为在低级任务(比如ping网络上的计算机和类似的东西)上,它们是相当的。 Python可能有更好的面向对象支持,但对于脚本(恰好是你需要的),Perl的强大功能非常明显。您在CPAN上找到的大量经过测试的模块(其中一些甚至是面向对象的)通常可以完成您需要的所有工作,如果您正确使用它们,它们甚至可以很好地扩展。
答案 5 :(得分:2)
我不懂Python,所以我无法评论它提供的内容,我同意那些建议使用Nagios或其他现有系统的人。
但是,如果您决定使用Perl推送自己的系统,请考虑使用POE。 POE是一个合作的多任务和网络框架。
POE的学习曲线陡峭。但是你很快就会得到你的回报。 POE将为构建提供坚实的基础。您需要的大部分client code已在CPAN上提供。答案 6 :(得分:1)
无论您了解哪个更好或者使用起来更舒服。他们都可以做好工作,做得好,所以这是你的偏好。
答案 7 :(得分:1)
现在我已经尝试了使用各种TAP库(主要是bash + netcat + curl和perl)为网络服务创建一些简单单元测试的方法。优点是您编写了一个可用于单元和网络测试的脚本。 显示是通过TAP :: Harness :: HTML。
答案 8 :(得分:-1)
我会说,如果你需要一些快速而又肮脏的东西在今天下午运行,那么perl可能是更好的语言。
然而,为了开发易于维护和扩展的可靠应用程序并且随着时间的推移可以构建,我会使用python。
这当然是假设您对两种语言的了解或多或少都相同。