我正在学习Perl,我遇到了一个问题。子程序和脚本之间的区别究竟是什么?Perl中的子程序和脚本有什么区别?
回答
A 脚本只是一个通常包含在单个文件中的(通常是简短的)程序的名称。这不是一个真正的科学术语,因此非常模糊 - 人们可以在讨论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. Perl中的'eq'和'=〜'有什么区别?
- 2. “perl -n”和“perl -p”有什么区别?
- 3. Javascript和ECMA脚本有什么区别?
- 4. Perl中'for'和'foreach'有什么区别?
- 5. Perl中BAREWORD和* BAREWORD有什么区别?
- 6. Perl中$ dxyabc和$ {dxyabc}有什么区别?
- 7. Perl中grep和map有什么区别?
- 8. 叉子和线程有什么区别?
- 9. 脚本编写时,#!/ usr/bin/perl和#!/ usr/bin/env perl有什么区别?
- 10. “perl test.pl”和“./test.pl”有什么区别?
- 11. 在Strawberry Perl中,perl \ lib和perl \ site \ lib有什么区别?
- 12. perl这两个脚本之间有什么区别
- 13. 代码和程序有什么区别?
- 14. 编程语言和脚本语言有什么区别?
- 15. 子类和子类有什么区别?
- 16. 脚本标签中的“lang”和“type”属性有什么区别?
- 17. shell脚本中的$ {varname}和$ varname有什么区别
- 18. Illustrator中的脚本和插件有什么区别?
- 19. bash脚本中的'exec cmd&'和'cmd&'有什么区别?
- 20. GAS中的脚本和自定义函数有什么区别?
- 21. shell脚本中的$ @和$ *有什么区别?
- 22. shell脚本中的$ @和$ *有什么区别?
- 23. MATLAB中的脚本和函数有什么区别?
- 24. 标记,编码,脚本,shell脚本和编程语言有什么区别?
- 25. Java:子程序和方法有什么区别?
- 26. 有什么区别`和$(Bash中有什么区别?
- 27. 这个脚本中int和Integer有什么区别?
- 28. 之间有什么区别。和``在shell脚本中操作
- 29. eclipse中运行php脚本和php网页有什么区别?
- 30. 我的($ variableName)和我的$ variableName在Perl中有什么区别?
尽管有两个含义,但“子程序”和“方法”不可互换。方法是与类和/或对象关联的子例程。 – ikegami 2012-02-21 06:46:27
@ikegami - 在Perl中是正确的。我不确定其他语言 – DVK 2012-02-21 07:12:15
不只是Perl。方法是一个通用的OOP术语。我没有听说任何盗用它的语言。 – ikegami 2012-02-21 17:41:11