私はレコードのフラットファイルをそれぞれ33行持っています。このファイルをテンプレートのスペックにフォーマットする必要があります。テンプレートはDOS形式で、ソースファイルはNIX形式です。テンプレートには、特定のインデントとスペーシングが付いていなければなりません。 Perlのは テンプレートツールキットとBASH BASH:フラットファイルからテンプレートにデータをインポートする
- BASH:私はいくつかのオプションを考えてきました
これは私の熟知している順です。ここではサンプルソースレコード(NIX形式)です: 私はスペースを節約するために改行の数(通常は33行)を削減しました:
JACKSON HOLE SANITARIUM AND REPTILE ZOO
45 GREASY HOLLER LN
JACKSON HOLE, AK 99999
Change Service Requested
BUBBA HOTEP
3 DELIVERANCE RD
MINNEAPOLIS, MN 99998
BUBBA HOTEP 09090909090909
You have a hold available for pickup as of 2012-01-04:
Title: Banjo for Fun and Profit
Author: Williams, Billy Dee
Price: $10
ここテンプレート(DOSフォーマット - 縮小ライン - 通常66行)があります:
<%BRANCH-NAME%>
<%BRANCH-ADDR%>
<%BRANCH-CTY%>
<%CUST-NAME%> <%BARCODE%>
You have a hold available for pickup as of <%DATE%>:
Title: <%TITLE%>
Author: <%AUTHOR%>
Price: <%PRICE%>
<%CUST-NAME%>
<%CUST-ADDR%>
<%CUST-CTY%>
end of file
実際には、各レコードの最後に「ファイルの終わり」と表示されます。
思考?私は事を複雑にする傾向がある。アップデート2
はそれを考え出しました。
私の答えは以下の通りです。お気軽に改善を提案してください。場合(<>)
でSTDINから読み出しラインとダミー入力配列を交換
#!/usr/bin/perl
use strict;
use warnings;
my @lines = qw/branchname cust_name barcode bogus whatever/; # (<>);
my ($branchname, $cust_name, $barcode, undef, $whatever) = @lines;
print <<TEMPLATE;
$branchname
<%BRANCH-ADDR%>
<%BRANCH-CTY%>
$cust_name $barcode
You have a hold available for pickup as of <%DATE%>:
Title: <%TITLE%>
Author: <%AUTHOR%>
Price: <%PRICE%>
$cust_name
<%CUST-ADDR%>
<%CUST-CTY%>
end of file
TEMPLATE
:Perlのヒアドキュメント(デモとしてほんの数の置換を示す):スターターとして
多分、コマンドラインからPHPを使用しますか?正しいとすれば、それはあなたに将来のWebインターフェイスのためのresuableコンポーネントを無料で提供します... –
提案のおかげでオイゲン、しかし私はこの事をwebify - されません、私はPHPを知らない。 – Bubnoff
''ファイルをテンプレートのスペックにフォーマットする 'と言うとき、レコードを含むファイルで何をしたいのですか? –