On Sat, 05 Feb 2005 02:46:03 +0900
"Bruce." <kbk@...> さんwrote:
> ちょっと調べてみましたが、print関数の引数に直接length()の戻り値を
> 使うとおかしくなるようです。いったん変数に受けてやって、その変数を
> 使って出力すると正常に動作します。
>
> もう少し追いかけてみます。
>
> ただ、単にprint関数の引数にlength()を使ったサンプルを作ってみると
> これはちゃんと動くのが謎なんですが。
藤岡です。お世話になります。
print関数の引数の書き方をいろいろ変えて試してみました。
次のように書くと、hello2.awkを入力すると問題は出ませんが、hello.awkを
入力すると二箇所でおかしくなります。下記のhello3.awkを入力すると同じ現象
が起こります。
----^ hello2.awk
BEGIN{
print "Hello world"
print "ハローワールド"
}
/ハロー/{print}
/Hello/{print}
{print $0, ":length=", length($0)}
{print $0, ":index=", index($0, "ロ")}
----$
次のようにスクリプトを書くと問題が出なくなりました。hello.awk、
hello2.awk、hello3.awkのいずれでも問題ありません。
----^ hello3.awk
BEGIN{
print "Hello world"
print "ハローワールド"
}
/ハロー/{print}
/Hello/{print}
{print $0 ":length=", length($0)}
{print $0 ":index=", index($0, "ロ")}
----$
現象論で申し訳ありませんが、何かのご参考になればと思います。
藤岡 和夫
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/