Perl フォーマット出力
Perl は非常に強力なテキストデータ処理言語です。
Perl では、format を使用してテンプレートを定義し、write を使用して指定したテンプレートに従ってデータを出力できます。
Perl のフォーマット定義構文は次のとおりです:
format FormatName = fieldline value_one, value_two, value_three fieldline value_one, value_two .
パラメータの説明:
- FormatName:フォーマット名。
- fieldline:出力行の形式を定義するフォーマット行です。@,^,<,>,| のような文字を使用します。
- value_one,value_two……:データ行です。前のフォーマット行に値を挿入するために使用します。すべてPerlの変数です。
- .: 終了記号。
以下は簡単なフォーマットの例です:
例
上記の例を実行した出力結果は次のとおりです:
first: google second: サンプル third: taoba
フォーマット行(グラフィック行)構文
- フォーマット行は @ または ^ で始まります。これらの行では変数置換は一切行われません。
- @ フィールド(配列記号 @ と混同しないでください)は通常のフィールドです。
- @,^ の後の <, >,| の長さがフィールド長を決定します。変数が定義された長さを超えると、切り捨てられます。
- <, >,| はそれぞれ左揃え、右揃え、中央揃えを表します。
- ^ フィールドは複数行テキストブロックの充填に使用されます。
フィールド形式
フィールドの形式は次の表のとおりです:
| 形式 | フィールドの意味 |
|---|---|
| @<<< | 左揃え出力 |
| @>>> | 右揃え出力 |
| @||| | 中央揃え出力 |
| @##.## | 固定精度の数値 |
| @* | 複数行テキスト |
各フィールドの最初の文字は行フィラー文字です。@文字を使用する場合は、テキストフォーマットは行われません。
上の表では、複数行フィールド @* を除き、フィールド幅は @ を含む指定された文字数に等しくなります。例:
@###.##
7文字幅、小数点前4桁、小数点後2桁を表します。
例は次のとおりです:
例
上記の例の出力結果は次のとおりです:
=================================== Ali 20 2000.00 =================================== =================================== サンプル 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
フォーマット変数
- $~ ($FORMAT_NAME) :フォーマット名 $^ ($FORMAT_TOP_NAME) :現在のヘッダーフォーマット名を格納します
- $% ($FORMAT_PAGE_NUMBER) :現在出力中のページ番号
- $= ($FORMAT_LINES_PER_PAGE) :1ページあたりの行数
- $| ($FORMAT_AUTOFLUSH) :出力バッファを自動的にフラッシュするかどうかを格納します
- $^L ($FORMAT_FORMFEED) :各ページ(最初のページを除く)のヘッダーの前に出力する文字列を格納します
以下は $~ を使用した簡単なフォーマットの例です:
例
上記の例を実行した出力結果は次のとおりです:
=================================
Text # サンプル
=================================
=================================
Text # サンプル
=================================
$~ を指定しない場合、STDOUT という名前のフォーマットが出力されます:
例
上記の例を実行した出力結果は次のとおりです:
---------------- STDOUT格式 ----------------
次の例では、レポートのヘッダー情報を追加して、$^ または $FORMAT_TOP_NAME 変数の使用法を示します:
例
上記の例の出力結果は次のとおりです:
=================================== Name Age =================================== =================================== Ali 20 2000.00 =================================== =================================== サンプル 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
$% または $FORMAT_PAGE_NUMBER を使用してレポートにページ番号を設定することもできます:
例
上記の例の出力結果は次のとおりです:
=================================== Name Age Page 1 =================================== =================================== Ali 20 2000.00 =================================== =================================== サンプル 30 2500.00 =================================== =================================== Jaffer 40 4000.00 ===================================
他のファイルへの出力
デフォルトでは、write関数は結果を標準出力ファイルSTDOUTに出力します。任意の他のファイルに出力させることもできます。最も簡単な方法は、ファイル変数をwriteのパラメータとして渡すことです。例:
write(MYFILE);
上記のコードでは、write はデフォルトで MYFILE という名前の出力フォーマットを使用して、ファイル MYFILE に出力します。
ただし、この方法では $~ 変数で使用する出力フォーマットを変更できません。システム変数 $~ はデフォルトのファイル変数に対してのみ機能します。デフォルトのファイル変数を変更し、$~ を変更してから write を呼び出すことができます。
例
実行が成功すると、tmp ファイルの内容を確認できます。次のようになります:
$ cat tmp
=================================
输入到文件中
=================================
select を使用してデフォルトのファイル変数を変更すると、現在のデフォルトファイル変数の内部表現が返されます。これにより、プログラムの他の部分に影響を与えずに、自分の意図どおりに出力するサブルーチンを作成できます。
例
実行が成功すると、tmp ファイルの内容を確認できます。次のようになります:
$ cat tmp
=================================
输入到文件中
=================================
=================================
使用定义的格式输入到文件中
=================================
その他の拡張