加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

什么是Perl内置的运算符/函数?

发布时间:2020-12-15 21:14:31 所属栏目:大数据 来源:网络整理
导读:我正在阅读Simon Cozens的 Beginning Perl,在第8章 – 子程序中,他指出“子程序”是用户功能,而打印,打开,分割等是内置的操作符或函数. 他们是什么?他们真的是内置的,语言固有的功能(如C的运算符大小),还是实际上是主模块的子程序/函数? 如果他们是子程序,
我正在阅读Simon Cozens的 Beginning Perl,在第8章 – 子程序中,他指出“子程序”是用户功能,而打印,打开,分割等是内置的操作符或函数.

他们是什么?他们真的是内置的,语言固有的功能(如C的运算符大小),还是实际上是主模块的子程序/函数?

如果他们是子程序,同时,为,除非等等也是子例程?操作符如何,–,eq等?

解决方法

打印,拆分不是子程序.他们不会产生次呼叫.他们甚至没有出现在符号表中(在main ::或其他方面,尽管你可以将它们称为CORE :: split等),并且不能获得对它们的代码的引用(尽管正在进行工作来创建代理当你想把它们视为子程序时,它们在CORE ::中为它们隐藏).他们就是操作符.
$perl -MO=Concise,-exec -e'sub f {} f()'
1  <0> enter 
2  <;> nextstate(main 2 -e:1) v:{
3  <0> pushmark s
4  <#> gv[*f] s
5  <1> entersub[t3] vKS/TARG,1      <--- sub call
6  <@> leave[1 ref] vKP/REFC
-e syntax OK

$perl -MO=Concise,-exec -e'split /;/'
1  <0> enter 
2  <;> nextstate(main 1 -e:1) v:{
3  </> pushre(/";"/) s/64
4  <#> gvsv[*_] s
5  <$> const[IV 0] s
6  <@> split[t2] vK                 <--- not a sub call
7  <@> leave[1 ref] vKP/REFC
-e syntax OK

$perl -MO=Concise,-exec -e'$x + $y'
1  <0> enter 
2  <;> nextstate(main 1 -e:1) v:{
3  <#> gvsv[*x] s
4  <#> gvsv[*y] s
5  <2> add[t3] vK/2                 <--- Just like this
6  <@> leave[1 ref] vKP/REFC
-e syntax OK

他们以各种名称而闻名:

>内置函数
>功能
>内置
>命名运算符

大多数被认为是以下之一:

>列表运算符
>命名一元运算符

子程序通常被称为函数(因为它们在C和C中),因此“函数”是一个模糊的词.这个歧义似乎是你问题的基础.

至于while,for,除非等,它们是“流控制语句”使用的关键字

while (f()) { g() }

和“声明修饰符”

g() while f();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读