我如何在Perl中重复使用N次string?
在Python中,如果我这样做:
print "4" * 4
我明白了
> "4444"
在Perl中,我会得到
> 16
在Perl中有没有简单的方法来做前者?
$ perl -e 'print "4"x4; print "\n"' 4444
x操作符logging在perldoc perlop中。 这里的二进制表示运算符取两个参数,不是由位组成的。
二进制“x”是重复运算符。 在标量上下文中,如果左操作数未包含在括号中,则返回由右操作数指定的次数重复的左操作数组成的string。 在列表上下文中,如果左操作数包含在括号中或者是由“
qw/STRING/
”组成的列表,则重复列表。 如果右操作数为零或负数,则根据上下文返回空string或空列表。
print '-' x 80; # print row of dashes print "\t" x ($tab/8), ' ' x ($tab%8); # tab over @ones = (1) x 80; # a list of 80 1's @ones = (5) x @ones; # set all elements to 5
perl -e意思是从命令行执行perl代码:
$ perl --help 用法:perl [开关] [ - ] [程序文件] [参数] -e编程一行程序(几个-e的允许,省略程序文件)
在Perl中,你想使用“x”运算符。
注意区别
"4" x 4
和
("4") x 4
前者产生一个重复的string:
"4444"
后者是一个重复的列表:
("4", "4", "4", "4")
在Perl中非常相似
print "4" x 4;
FWIW,它也是在Perl中print 4 x 4
。
一般来说,在Perl中,运算符是单形的,即。 对于string语义,数字语义,按位语义等,有不同的操作符集合,操作数的types在很大程度上并不重要。 当你将一个数字运算符应用于一个string时,该string首先被转换为一个数字,然后你得到你所要求的操作(例如乘法),当你将一个string运算符应用于一个数字时,它就变成了一个string,得到你要求的操作(例如重复)。 Perl首先关注操作符,而操作数的types则仅次于操作符 – 如果的确如此,他们一定会付出任何代价。
这与Python和大多数其他语言是相反的,在这些语言中,使用了一组操作符,而操作数的types决定了您将实际获得哪些语义 – 即。 运算符是多态的。
到目前为止,所有的答案都没有提到,运算符x
不仅在string文字上工作,而且在stringvariables或构buildstring的expression式上工作:
$msg = "hello "; print $msg x 2; print ($msg x 2) x 2;
如果你想打印10个字符“A”,你也可以这样做
perl -e 'print "A" x 10'; echo
输出示例
user@linux:~$ perl -e 'print "A" x 10'; echo AAAAAAAAAA user@linux:~$