Go to the first, previous, next, last section, table of contents.

繰り返し

`x'
繰り返し演算子。左引数を右引数回分繰り返した文字列を返す。 配列のコンテキストでは、左引数が括弧に入ったリストの場合、リストを繰り返す。
print '-' x 80;     # ダッシュの列を出力する
print '-' x80;      # 正しくない、なぜなら x80 は識別子だから

print "\t" x ($tab/8), ' ' x ($tab%8);  # タブに変換

@ones = (1) x 80;      # 80 個 1 が並んだ配列
@ones = (5) x @ones;   # 全要素を 5 にする
`x='
繰り返し & 代入演算子。スカラーに対してのみ働く。
`..'
範囲指定演算子。コンテキストによって異なる二つの演算を表す。 配列のコンテキストでは、 左の値から右の値まで(1 ずつ)増やした値を持つ配列を返す。 これは for (1..10) ループや配列の一部を切り出す操作には便利である。 スカラーのコンテキストでは .. は論理値を返す。 演算子はフリップフロップのように 2 通りの値をとる。 .. はそれぞれが自分だけの論理状態を持っていて、左引数が偽である限り、 偽の値を持つ。いったん左引数が真になると、右引数が真になるまで真である。 その後、範囲指定演算子は再び偽になる。 (次に範囲指定演算子が評価されるまで、偽にはならない。 真になったのと同じ評価を行った時に偽になることがありうるが、 それでも一度は真を返す。)演算子が偽の間は右引数は評価されず、 演算子が真の間は左引数は評価されない。 スカラー .. 演算子はもともと sed や awk にならって 行番号範囲指定をするためのものである。 優先度は ||&& よりも少し低い。返り値は偽ならばヌル文字列、 真ならば(1 から始まる)連続した数字である。 この数字は範囲指定に出会う毎にリセットされる。 範囲の最後の数字には文字列 `E0' がつけられるので、数値に影響はないが、 最後の点を除きたい場合に検索のきっかけとなる。 数字が 1 より大きくなるのを待つことで最初の点を除くことができる。 スカラーの .. の引数のどちらかの値が静的な場合は、 引数は暗黙のうちに変数 $. と比較される。 スカラー演算子としては:
if (101 .. 200) { print; }     # 200 行出力する

next line if (1 .. /^$/); # ヘッダー行をスキップ

s/^/> / if (/^$/ .. eof());    # 本体を引用する
配列演算子としては:
for (101 .. 200) { print; }    # $_ を 100 回出力する

@foo = @foo[$[ .. $#foo]; # 高価なノーオペレーション
@foo = @foo[$#foo-4 .. $#foo]; # 最後の 5 要素を取り出す

Go to the first, previous, next, last section, table of contents.