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