This is an internal function used by formats, though you may call it, too. It formats (see perlform) a list of values according to the contents of PICTURE, placing the output into the format output accumulator, $^A (or $ACCUMULATOR in English). Eventually, when a write is done, the contents of $^A are written to some filehandle. You could also read $^A and then set $^A back to "". Note that a format typically does one formline per line of form, but the formline function itself doesn't care how many newlines are embedded in the PICTURE. This means that the ~ and ~~ tokens treat the entire PICTURE as a single line. You may therefore need to use multiple formlines to implement a single record format, just like the format compiler.

これは、format が使用する内部関数ですが、直接呼び出すこともできます。 これは、PICTURE の内容にしたがって、LIST の値を整形し (perlform を 参照してください)、結果をフォーマット出力アキュムレータ$^A (English モジュールでは $ACCUMULATOR) に納めます。 最終的に、write が実行されると、$^A の中身が、 何らかのファイルハンドルに書き出されます。 また、自分で $^A を読んで、$^A の内容を "" に戻してもかまいません。 format は通常、1 行ごとに formline を行ないますが、 formline 関数自身は、PICTURE の中にいくつの改行が入っているかは、 関係がありません。 これは、~~~トークンは PICTURE 全体を一行として扱うことを意味します。 従って、1 レコードフォーマットを実装するためには フォーマットコンパイラのような複数 formline を使う必要があります。

Be careful if you put double quotes around the picture, because an @ character may be taken to mean the beginning of an array name. formline always returns true. See perlform for other examples.

ダブルクォートで PICTURE を囲む場合には、@ という文字が 配列名の始まりと解釈されますので、注意してください。 formline は常に真を返します。 その他の例については perlform を参照してください。

If you are trying to use this instead of write to capture the output, you may find it easier to open a filehandle to a scalar (open $fh, ">", \$output) and write to that instead.

出力を捕捉するために write の代わりにこれを使おうとした場合、 スカラにファイルハンドルを開いて (open $fh, ">", \$output)、 代わりにここに出力する方が簡単であることに気付くでしょう。