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

时间:2008-11-10 10:01:24

标签: string perl operators repeat

在Python中,如果我这样做:

print "4" * 4

我得到了

> "4444"

在Perl中,我会得到

> 16

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

6 个答案:

答案 0 :(得分:94)

$ 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)

答案 1 :(得分:40)

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

注意

之间的区别
"4" x 4

("4") x 4

前者产生重复的字符串:

"4444"

后者重复列表:

("4", "4", "4", "4")

答案 2 :(得分:16)

在Perl中非常相似

print "4" x 4;

答案 3 :(得分:9)

FWIW,它在Perl中也是print 4 x 4

通常,在Perl中,运算符是单态的,即。对于字符串语义,数字语义,按位语义等,你有不同的运算符集,它们是有意义的,并且操作数的类型在很大程度上无关紧要。当您将数字运算符应用于字符串时,字符串将首先转换为数字,然后您将获得所要求的操作(例如乘法),并且当您将字符串运算符应用于数字时,它将变为字符串并且您得到你要求的操作(例如重复)。 Perl首先关注运营商,而操作数的类型仅次于第二 - 如果它确实让任何人都付出了代价。

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

答案 4 :(得分:1)

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

$msg = "hello ";
print $msg x 2;
print ($msg x 2) x 2;

答案 5 :(得分:1)

如果你想打印10个字符“A”,你也可以这样做

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

输出

的示例
user@linux:~$ perl -e 'print "A" x 10'; echo
AAAAAAAAAA
user@linux:~$