Proper way to string interpolate an array element within printf
在研究 Schwartz 的 Learning Perl 时,我遇到了一个练习,我应该接受许多用户输入字符串,其中第一个输入是确定其他字符串的右对齐输出的宽度。
换句话说,输入:
1 2 3 | 10 apple boy |
输出应该是:
1 2 3 | 10 apple boy |
输出右对齐 10.
我尝试使用数组来解决问题:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
但是在正确格式化和打印 \\'10\\' 之后,我得到了错误:
1 2 3 4 5 6 7 8 9 | $ perl test.pl 10 apple boy 10 Invalid conversion in printf:"%a" at test.pl line 11, <> line 3. %apples Argument"boy" isn't numeric in printf at test.pl line 11, <> line 3. 0oys |
我尝试了多种方法,通过将数组元素括在大括号中来强制对其进行插值,但所有这些都导致了错误。在 printf 中对数组元素进行字符串插值的正确方法是什么(如果这是正确的术语)?
这里有一种更 Perlish 的写法,它避免了必须执行显式的
1 2 3 4 5 6 7 8 |