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行目


Copyright(C) 2006-2011 CLAYPOT. All Rights Reserved.