Форматы состоят из строки формата, за которой следуют переменные, которые идут в этой строке (через запятую):
#!/usr/bin/perl
use strict;
use warnings;
our $first = "Chas.";
our $last = "Owens";
our $chkno = "123456";
our @addr = ("123 Nowhere Lane", "Citysville, Townshire, 12345");
our $phone = "123-456-7890";
our $date = "2009-08-10";
our $payee = "Stack Overflow";
our $amount = "0.02";
our $amount_str = "no dollars and two cents";
our $memo = "my two cents worth";
write;
format STDOUT =
@<<<<<<<<<<<<< @<<<<<<<<<<<<<<<< @>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
$first, $last, $chkno
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
$addr[0]
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Date:
$addr[1]
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<
$phone, $date
Pay to the
Order of: @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @#######.##
$payee, $amount
@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< dollars
$amount_str
Signature
Memo: @<<<<<<<<<<<<<<<<<<<<<<<<<<< _________________________
$memo
.
Тем не менее, форматы имеют некоторые очень плохие недостатки, и вам действительно следует использовать другое решение. Другой вариант - использовать Perl6::Form
. Это бэкпорт проекта форматов для Perl 6:
#!/usr/bin/perl
use strict;
use warnings;
use Perl6::Form;
my $first = "Chas.";
my $last = "Owens";
my $chkno = "123456";
my @addr = ("123 Nowhere Lane", "Citysville, Townshire, 12345");
my $phone = "123-456-7890";
my $date = "2009-08-10";
my $payee = "Stack Overflow";
my $amount = "0.02";
my $amount_str = "no dollars and two cents";
my $memo = "my two cents worth";
print form
"{<<<<<<<<<<<<<} {<<<<<<<<<<<<<<<<} {>>>>>>>>>>>>>>>>>>>>>>>>>>>>>}",
$first, $last, $chkno,
"{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<}",
$addr[0],
"{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} Date:",
$addr[1],
"{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} {<<<<<<<<<<<<<<<<<<<<<<<}",
$phone, $date,
"",
"Pay to the",
'Order of: {<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} ${>>>>>>>.<<}',
$payee, $amount,
"{<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<} dollars",
$amount_str,
" Signature",
"Memo: {<<<<<<<<<<<<<<<<<<<<<<<<<<<} _________________________",
$memo;