Loose-Info.com

Last Update 2019/12/25


TOP - Perl - フォーマット

フォーマットは定型的な出力を行う際に使用します。
formatで宣言・定義を行い、writeで実行します。
STDOUTに対するデフォルトの名前は"STDOUT"となります。

・宣言の書式
format 名前1 = フォーマット指定の記述(コメント行、式行、データ指定行) . ← ピリオドで終了

名前1
フォーマット名(省略時はSTDOUT)

・フォーマット指定文字
@ : 通常のフィールドの始まり ^ : 特別フィールドの始まり < : 左合わせ | : 中央合わせ > : 右合わせ # : 数字(右合わせ) 0 : 右合わせ数値の左側を指定桁まで0で埋める . : 小数点 @* : 自由幅フィールド(複数行全行) ^* : 自由幅フィールド(複数行1行)

(例1)
$data1 = "氏名"; $data2 = "06/11/30"; $data3 = "12:00:00"; # ***** 見出し行 ***** format STDOUT_TOP = data1 data2 data3 . # ***** データ行 ***** format STDOUT = # 左合わせの10文字幅フィールドを指定 @<<<<<<<<< @<<<<<<<<< @<<<<<<<<< $data1, $data2, $data3 . write;

実行結果
data1 data2 data3 氏名 06/11/30 12:00:00

(例2)
$data1 = "氏名"; $data2 = "06/11/30"; $data3 = "12:00:00"; # ***** 見出し行 ***** format STDOUT_TOP = data1 data2 data3 . # ***** データ行 ***** format STDOUT = # 中央合わせの10文字幅フィールドを指定 @||||||||| @||||||||| @||||||||| $data1, $data2, $data3 . write;

実行結果
data1 data2 data3 氏名 06/11/30 12:00:00

(例3)
$data1 = "氏名"; $data2 = "06/11/30"; $data3 = "12:00:00"; # ***** 見出し行 ***** format STDOUT_TOP = data1 data2 data3 . # ***** データ行 ***** format STDOUT = # 右合わせの10文字幅フィールドを指定 @>>>>>>>>> @>>>>>>>>> @>>>>>>>>> $data1, $data2, $data3 . write;

実行結果
data1 data2 data3 氏名 06/11/30 12:00:00

(例4)
$data1 = 3000.55; $data2 = 500; # ***** 見出し行 ***** format STDOUT_TOP = data1 data2 . # ***** データ行 ***** format STDOUT = # 数値フィールドを指定 @#####.### @0######## $data1, $data2 . write;

実行結果
data1 data2 3000.550 0000000500

(例5)
$data1 = "複数行\nテスト"; $data2 = "1行目\n2行目\n3行目"; # ***** データ行 ***** format STDOUT = # 複数行の書き出し @* $data1 @* $data2 . write;

実行結果
複数行 テスト 1行目 2行目 3行目

(例6)
$data1 = "複数行\nテスト"; $data2 = "1行目\n2行目\n3行目"; # ***** データ行 ***** format STDOUT = # 複数行の内1行目を書き出し ^* ^* $data1, $data2 . write;

実行結果
複数行 1行目