47
A
回答
86
$ 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)
16
這是在Perl
print "4" x 4;
39
在Perl很相似,要使用「x」操作符。
注
"4" x 4
和
("4") x 4
前者之間的差別產生重複的字符串:
"4444"
後者重複列表:
("4", "4", "4", "4")
8
FWIW,它也是Perl中的print 4 x 4
。
一般來說,在Perl中,運營商是單態,即。對於字符串語義,數字語義,按位語義等,有不同的操作符集合,操作數的類型在很大程度上並不重要。當你將一個數字運算符應用於一個字符串時,該字符串首先被轉換爲一個數字,然後你得到你要求的操作(例如乘法),並且當你將一個字符串運算符應用於一個數字時,它會變成一個字符串,而你獲得您要求的操作(例如重複)。 Perl首先關注操作符,而操作數的類型則僅次於操作符 - 如果實際上它確實向他們付出任何代價。
這是Python和大多數其他語言,你使用一組運營商的對立面,和類型的操作數的確定語義你實際上會得到 - 即。運算符是多態的。
1
所有的答案,給了這麼遠,錯過一提的是運營商x
不僅在字符串文字,但也對字符串變量或建立字符串表達式的工作:
$msg = "hello ";
print $msg x 2;
print ($msg x 2) x 2;
1
如果要打印10個字符「A」 S,你也可以做到這一點
perl -e 'print "A" x 10'; echo
例與輸出
[email protected]:~$ perl -e 'print "A" x 10'; echo
AAAAAAAAAA
[email protected]:~$
這也是可能的字符串變量(和字符串表達式),參見[我的回答(http://stackoverflow.com/a/30100928/2932052)。 – Wolf 2015-05-07 12:20:34