我想打印几个数组,输出元素的字段宽度为3,我想我可以使用printf
,但是如果我使用printf
那么我需要编写所有元素的格式数组,但数组很大。
例如
@array = (1,10,100,30);
printf ("%3d %3d %3d %3d\n",$array[0],$array[1],$array[2],$array[3]);
我知道我可以使用循环来打印元素,直到所有数组都循环通过,但我认为这不是一个好主意。
有没有办法可以让我只描述一次元素的格式,然后自动应用于整个数组?
这样的事情?
printf ("%3d\n",@array);
感谢
答案 0 :(得分:11)
以下是两种方法:
使用循环
printf "%3d ", $_ for @array;
print "\n";
使用x
运算符构建可变长度模板
printf "%3d " x @array . "\n", @array;
答案 1 :(得分:6)
试试这个混合物:
print( map( {sprintf("%3d\n", $_)}, @array));