我正在尝试从Perl写入文件。我只想以制表符分隔格式编写数据。但是,我写的数据有不同的长度,并没有排队。
例如,我正在尝试写这样的东西:
Name Education Fav_Car MoneyInBank
josh High School Porche 500
SomeOtherName PHD Hyundai 50000
我只是希望数据与我在顶部的标题对齐。
我输出的数据如下:
printf FILE ("%s%20s%20s\n", "Name", "Ed", "Car");
while (($name, $ed, $car) = $sth->fetchrow_array) {
printf FILE ("%s>>>>>>>>>>>>>%40s%40s\n", $name, $ed, $car);
};
答案 0 :(得分:28)
制表符分隔的数据(字段长度不一致)在文本编辑器中打开时不会排列。
解决方案:
printf
的字段宽度或formats)。例如,您可以使用
printf("%-15s %-15s %-10s %9s\n", $name, $edu, $car, $cash);
-
之后的%
会导致字段左对齐。数字(如钱)通常是右对齐的(这是默认值)。
答案 1 :(得分:6)
查看Perl format命令。
答案 2 :(得分:4)
查看Perl6::Form CPAN模块。
关于stackoverflow的上一个问题/答案What Other Languages Have Features And Or Libraries Similar To Perls Format可能有所帮助。
答案 3 :(得分:2)
除了C的printf之外,您还可以使用“*”,
动态调整宽度printf FILE ("%*s%*s%*s\n", 20, "Name", length($blah), "Ed", 20, "Car");
答案 4 :(得分:1)
printf在C中执行此操作。对于20个字符的字段:
printf("%20s%20s%20s$20S\n",$name,$ed,$car,$money);
答案 5 :(得分:1)
如果您正在使用Linux,一个简单的解决方案是使用column系统命令和-t标志。只需将空格分隔表打印到文件中,然后在该文件上使用column命令。
system("column -t file > new_file");