Awk になれた方は、以下のようなことに、特に注意してください:
use English;としてロードすれば、awk でのようにして特殊変数を (
$RS のように)
参照することができます。詳しくは、See section 定義済み変数,を参照してください。
if や while には、中括弧が必須です。
substr() や index() での文字
列中の位置も同様です。
split は行なわれません。自分で
split を行なって、明示的に配列に入れる必要があります。また、
split() 演算子は、引数が違います。
$0 ではなく、$_ に入れられています。一般に、
行末の改行文字は削除されていません。($0 は、実行されているプログ
ラムの名前です。)See section 定義済み変数,を参照してください。
$, や $\ を設定しない限り、print() 文はフィールドセ
パレータやレコードセパレータを付与しません。`English' モジュールを
使えば、$OFS や $ORS を設定することができます。
print するときには、前もって open しなければな
りなせん。
.. です。コンマ演算子は、C と同じよう
に動作します。
=~ です。(~ はC と同じ
ように1の補数をとる演算子です。)
** です。^ は C と同じく XOR
演算子です。(awk が基本的に C と互換性がないことにお気付きかもしれません
ね。)
. です。(空文字列を使うと、
/par/ /pat/ が解析できなくなります。3番目のスラッシュが除算演算子
と解釈されるからです。Perl の字句解析部は、/, ?, >
のような演算子に対し、多少文脈依存となっています。実際、. 自身も、
数値の開始になることもあります。
next、exit、continue の働きが異なります。
Awk Perl ARGC $#ARGV or scalar @ARGV ARGV[0] $0 FILENAME $ARGV FNR $. - something FS (whatever you like) NF $#Fld, or some such NR $. OFMT $# OFS $, ORS $\ RLENGTH length($&) RS $/ RSTART length($`) SUBSEP $;
$RS にパターンを設定することはできず、文字列だけです。
Go to the first, previous, next, last section, table of contents.