Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于文本文件处理的Perl优于shell脚本的优势_Perl_Shell - Fatal编程技术网

用于文本文件处理的Perl优于shell脚本的优势

用于文本文件处理的Perl优于shell脚本的优势,perl,shell,Perl,Shell,我正在设置一个测试环境来测试一个程序。该环境包含大量作为输入的文本文件,程序的预期行为也记录在另一组文本文件中。我想用所有输入文件顺序运行程序,并将生成的输出与参考文件进行比较。 因为我可以选择我可以使用的语言(shell或perl),所以我想知道perl语言的优点/优势是什么。perl至少比任何shell都有以下优点 便携性 在Windows上工作 即使在Unix上,同一个shell命令的行为也可能因系统而异 A A 更好的结构,如功能和编程 使用 更好的测试设施,如和 更适合分销 大

我正在设置一个测试环境来测试一个程序。该环境包含大量作为输入的文本文件,程序的预期行为也记录在另一组文本文件中。我想用所有输入文件顺序运行程序,并将生成的输出与参考文件进行比较。
因为我可以选择我可以使用的语言(shell或perl),所以我想知道perl语言的优点/优势是什么。

perl至少比任何shell都有以下优点

  • 便携性
    • 在Windows上工作
    • 即使在Unix上,同一个shell命令的行为也可能因系统而异
  • A
  • A
  • 更好的结构,如功能和编程
  • 使用
  • 更好的测试设施,如和
  • 更适合分销

大多数动态语言(Perl、Python、Ruby…)都有这些优点。

由于Schwern列出了许多优点,我只剩下一个一直困扰我的缺点

在Perl中调用其他程序比在shell中复杂得多。有许多情况下,您需要处理,而shell通常只是做正确的事情


我个人的经验法则是,当任务主要是调用其他程序时使用shell脚本,当我处理数据时使用Perl。如果两者都需要,我可能会使用一个shell脚本调用Perl进行数据挖掘,尽管如果只发出很少的外部命令,它可能会变成一个完整的Perl脚本。

编写一个处理STDIN并输出到STDOUT的Perl脚本,可以使用
unix_命令| Perl_脚本| other_unix_命令>output_文件
,这就是我混合Perl和sh的意思。我完全同意。但是,请看一看并寻找比标准系统和backticks更好的方法。Schwern:您在这里提到的两个非常令人印象深刻的模块。我不确定我是否会添加Perl的面向对象和所谓的700多个测试库作为优势。但是可移植性和大量的库确实使perl成为我目前首选的脚本语言+1.@RenéNyffenegger开箱即用的Perl-OO很臭。OO链接到Moose,可能不是您可能认为的PerlOO。相信我,.Re:OO我现在明白了。。。我没有关注你发布的链接。我必须承认我从未调查过驼鹿。