Как я могу повторить строку N раз в Perl?
в Python, если я сделаю это:
print "4" * 4
Я
> "4444"
в Perl, я бы вам
> 16
есть ли простой способ сделать первый в Perl?
6 ответов:
$ 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)
в Perl вы хотите использовать оператор "x".
обратите внимание на разницу между
"4" x 4
и
("4") x 4
первый создает повторяющуюся строку:
"4444"
последний повторный список:
("4", "4", "4", "4")
FWIW, это также
print 4 x 4
в Perl.В общем случае, в Perl операторы мономорфны, т. е. у вас есть разные наборы операторов для Строковой семантики, для числовой семантики, для побитовой семантики и т. д. там , где это имеет смысл и тип операндов в основном не имеет значения. Когда вы применяете числовой оператор к строке, строка сначала преобразуется в число, и вы получаете операцию, которую вы просили (например. умножение), и когда вы применяете строковый оператор К a номер, он превратился в строку, и вы получаете операцию, которую вы просили (например. повторение.) Perl сначала обращает внимание на оператор, а типы операндов только во – вторых-если он вообще обращает на них внимание.
Это противоположность Python и большинству других языков, где вы используете один набор операторов, а типы операндов определяют, какую семантику вы на самом деле получите – ie. операторы являются полиморфными.