Perl中的子程序和脚本有什么区别?

时间:2012-02-21 05:00:47

标签: perl

我正在学习Perl,我遇到了一个问题。子例程和脚本之间究竟有什么区别?

2 个答案:

答案 0 :(得分:7)

脚本只是通常包含在单个文件中的(通常很短的)程序的名称。这不是一个科学/技术术语,因此非常模糊 - 人们在讨论3行快速程序或10000行代码程序时可以参考“脚本”。

有些人将任何Perl程序称为“脚本” - 请参阅下面的历史原因。有些人,当他们说“Perl脚本”而不是Perl“程序”时,意味着一个相对简单,相对较短的程序,经常结构化而不使用任何子程序/类/其他代码组织方法。同样,没有标准的定义。

顺便说一句,Perl程序经常被称为“脚本”的原因是Perl originally was used for writing scripts that perform work in Unix shell,这是shell脚本语言的使用方式。术语“scripting language”表示用于控制应用程序的语言,在本例中为Unix shell。

当然,从那时起,Perl已经发展成为一种完整的编程语言,但这个词/术语仍然存在,有时被惯性所使用,有时也会被贬义。


subroutine(也称为过程,函数,例程,方法或子程序)是执行特定任务并且相对独立于剩余代码的较大程序中的一部分代码。它通常意味着包含执行需要在程序中多次执行的任务的代码,甚至包含多个程序。

子程序不是Perl特定的概念,虽然称它为“子程序”是用很少的语言完成的(大多数使用术语函数,方法或程序)。


作为一个特殊的注释,在Perl以及其他语言中的“方法”是一种特殊类型的子例程,它与面向对象的类或对象相关联。那个班。当然,它仅仅是子例程的一个特例,这一事实突出表明 - 尽管deepest wishes by "Modern Perl" author chromatic - Perl 5中的方法用“sub”关键字声明,与常规子例程相同。


如上所述,某些人在将Perl程序称为“脚本”时,暗示它不包含子程序(例如,任何复杂到足以使子程序不再是“脚本“但是”程序“)。但这不是一个公认或正式的定义 - 如上所述,没有定义脚本是什么,每个人都使用任何他们想要的方式。

答案 1 :(得分:1)

脚本通常是一个文件,可以包含语句和子例程。子程序是您在脚本中找到的东西。

子程序在perlsub手册页中有详细描述。