我读起的Perl西蒙科泽斯并在第8章-子程序他指出,"子程序"的用户功能,同时print,open,split等是内置的运算符或函数.
这些是什么?它们是真正内置的,语言固有的特性(如C的sizeof运算符)还是它们实际上是main模块的子程序/函数?
如果他们的子程序,有while,for,unless,等也子程序?什么样的运营商+,-,eq等?
ike*_*ami 27
print,open,split不子程序.它们不会导致子调用.他们甚至不存在于符号表(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
Run Code Online (Sandbox Code Playgroud)
它们以各种名称而闻名:
大多数被认为是以下之一:
子程序通常称为函数(因为它们在C和C++中),因此"函数"是一个含糊不清的单词.这种含糊不清似乎是您问题的基础.
至于while,for,unless,等,他们是通过"流量控制语句"的关键字
while (f()) { g() }
Run Code Online (Sandbox Code Playgroud)
和"声明修饰语"
g() while f();
Run Code Online (Sandbox Code Playgroud)
tch*_*ist 11
Perl关键字是regen/keywords.plPerl源代码分发中的文件中定义的关键字.这些是:
__FILE__,__LINE__,__PACKAGE__,__DATA__,__END__,AUTOLOAD,BEGIN,UNITCHECK,CORE,破坏,END,INIT,CHECK,ABS,接受报警,并ATAN2,绑定,binmode,祝福,休息,来电,CHDIR,输入chmod,格格,印章,CHOWN,CHR,chroot环境,关闭,closedir,CMP,连接,请继续,COS,隐窝,dbmclose,dbmopen,默认情况下,定义,删除,死,做,转储,每个,否则,ELSIF endgrent,endhostent, endnetent,endprotoent,endpwent,endservent,EOF,当量,EVAL,EXEC,存在,退出,EXP,的fcntl,的fileno,羊群,对,的foreach,叉,格式,formline,GE,GETC,getgrent,getgrgid,getgrnam,gethostbyaddr, gethostbyname,gethostent,getlogin,getnetbyaddr,getnetbyname,getnetent,getpeername,getprrp,getppid,getpriority,getprotobyname,getprotobynumber,getprotoent,getpwent,getpwnam,getpwuid,getservbyname,getservwport,getservent,getsockname,getsockopt,given,glob,gmtime,goto, grep,gt,hex,if,index,int,ioctl,join,keys,kill,last,lc,lcfirst,le,length,link,listen,local,localtime,lock,日志,LSTAT,LT,男,地图,MKDIR,了msgctl,msgget,msgrcv,的msgsnd,我,NE,未来,不,不,华侨城,开放,执行opendir,或者,ORD,我们,包,包,管,流行, POS,打印,printf的,原型,推,q,QQ,QR,quotemeta,QW,QX,RAND,读,READDIR,readline的,的readlink,readpipe,recv的,重做,ref时,重命名,需要,复位,返回,反向, rewinddir,rindex,rmdir,s,say,scalar,seek,seekdir,select,semctl,semget,semop,send,setgrent,sethostent,setnetent,setpgrp,setpriority,setprotoent,setpwent,setservent,setsockopt,shift,shmctl,shmget, shmread,shmwrite,shutdown,sin,sleep,socket,socketpair,sort,splice,split,sprintf,sqrt,srand,stat,state,study,sub,substr,symlink,syscall,sysopen,sysread,sysseek,system,syswrite,告诉,telldir,领带,捆绑,时间,次,tr,截断,uc,ucfirst,umask,undef,除非,取消链接,解压缩,unshift,解开,直到,使用,utime,值,vec,等待,waitpid,wantarray,警告,何时,同时,写,x,xor,y.
该perlsyn,perlop得到和perlsub联机手册必读,由或许跟着perlfunc手册页.要了解如何覆盖与对象一起使用的内置运算符,请参阅重载手册页.
| 归档时间: |
|
| 查看次数: |
1552 次 |
| 最近记录: |