我的格式如下所示:
format STDOUT =
------------------------------------
|Field1 | Field2 | Field3 |
------------------------------------
|@<<<<<<<<<<| @<<<<<<<<<<<| @<<<<< |~~
shift(@list1),shift(@list2),shift(@list3)
------------------------------------
.
write STDOUT;
所以问题如下:
答案 0 :(得分:0)
对我而言,你似乎立刻做了很多事。
在格式化输出之前,请创建对该标志的检查 根据标志创建标量(例如,数组的前10个元素)。 然后将字符串放在输出中。
你也可以制作一个标量,它是Field4的整数表+条目 如果设置了标志2,则在if语句中将标量连接到输出。
最好采取许多措施正确地完成工作,而不是试图“聪明” 并用几行代码完成所有步骤。
答案 1 :(得分:0)
通过黑客攻击内部, man perlform 访问格式 内部
use Carp;
sub swrite {
croak "usage: swrite PICTURE ARGS" unless @_;
my $format = shift;
$^A = "";
formline($format,@_);
return $^A;
}
$string = swrite(<<'END', 1, 2, 3);
Check me out
@<<< @||| @>>>
END
print $string;
答案 2 :(得分:0)
我不认为格式功能非常适合动态方法 - 您可以尝试使用sprintf
或pack
模板。它们的格式是简单的字符串,更容易在运行中构建。