我如何在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:~$