print
,open
,split
はサブルーチンではありません。彼らは副呼び出しをもたらさない。シンボルテーブルにも存在しません(など)。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
彼らは様々な名前で知られている:
- 組み込み関数
- 機能
- 組み込みコマンド
- という名前のオペレーター
そして、ほとんどの一つであると考えられています以下のうち:
サブルーチンは、多くの場合、機能と呼ばれている単項演算子の名前なので、「機能」はあいまいな言葉です。このあいまいさは、あなたの質問の基礎と思われる。 while
については
、for
、unless
など、彼らは、 "フロー制御文"
while (f()) { g() }
と "文修飾子"
g() while f();
私は 'perldoc perlfunc'と' perldoc -f 'を見ています。 –
これは私の好きなperl演算子のリストです:http://www.ozonehouse.com/mark/periodic/ – Seth
@Seth Perl 6のためのものです。(すべての目的と目的のために)Perl 5とは全く別の言語です。彼らが「Perl」と言ったとき、誰もが意味することです。 – jwodder