如何在Perl中将字符串重复N次?

在Python中,如果我这样做:

print "4" * 4

我明白了

> "4444"

在Perl,我会得到

> 16

在Perl中有简单的方法可以做前者吗?

izb asked 2019-11-06T13:02:25Z
6个解决方案
95 votes
$ perl -e 'print "4"x4; print "\n"'
4444

x运算符记录在perldoc perlop中。 此处二进制表示顺便说一句,该操作符采用两个不由位组成的参数。

二进制“ x”是重复运算符。 在标量环境中或   左操作数未括在括号中,它返回一个包含以下内容的字符串   左边操作数的重复次数由右边指定的次数   操作数。 在列表上下文中,如果左操作数括在括号中   或者是由“ qw/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
Usage: perl [switches] [--] [programfile] [arguments]
  
  -e program     one line of program (several -e's allowed, omit programfile)
Vinko Vrsalovic answered 2019-11-06T13:02:59Z
41 votes

在Perl中,您想使用“ x”运算符。

注意之间的区别

"4" x 4

("4") x 4

前者产生一个重复的字符串:

"4444"

后者是重复的清单:

("4", "4", "4", "4")
bart answered 2019-11-06T13:03:49Z
16 votes

在Perl中非常相似

print "4" x 4;
The Archetypal Paul answered 2019-11-06T13:04:15Z
9 votes

FWIW,也是Perl的print 4 x 4

通常,在Perl中,运算符是单态的,即。 对于字符串语义,数字语义,按位语义等,您有不同的运算符集,在这有意义的地方,并且操作数的类型在很大程度上无关紧要。 当您将数字运算符应用于字符串时,该字符串首先会转换为数字,并且会得到您要求的操作(例如,乘法),而当您将字符串运算符应用于数字时,它会变成一个字符串,并且您 获得您要求的操作(例如重复)。 Perl首先关注运算符,然后仅关注操作数的类型-如果确实让他们全神贯注。

这与Python和大多数其他语言相反,在Python中,您使用一组运算符,而操作数的类型决定了您实际上将获得的语义-即。 运算符是多态的。

Aristotle Pagaltzis answered 2019-11-06T13:04:58Z
1 votes

到目前为止给出的所有答案都没有提到操作符x不仅适用于字符串文字,而且适用于构建字符串的字符串变量或表达式:

$msg = "hello ";
print $msg x 2;
print ($msg x 2) x 2;
Wolf answered 2019-11-06T13:05:25Z
1 votes

如果要打印10个字符“ A”,也可以执行此操作

perl -e 'print "A" x 10'; echo

输出示例

user@linux:~$ perl -e 'print "A" x 10'; echo
AAAAAAAAAA
user@linux:~$ 
Charlotte Russell answered 2019-11-06T13:06:02Z
translate from https://stackoverflow.com:/questions/277485/how-can-i-repeat-a-string-n-times-in-perl