Подтвердить что ты не робот

Как я могу повторить строку N раз в Perl?

В Python, если я это сделаю:

print "4" * 4

Я получаю

> "4444"

В Perl я получил бы

> 16

Есть ли простой способ сделать первый в Perl?

4b9b3361

Ответ 1

$ 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 allowed, omit programfile)

Ответ 2

В Perl вы хотите использовать оператор "x".

Обратите внимание на разницу между

"4" x 4

и

("4") x 4

Первая создает повторяющуюся строку:

"4444"

последний повторный список:

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

Ответ 3

Это очень похоже на Perl

print "4" x 4;

Ответ 4

FWIW, его также print 4 x 4 в Perl.

В общем случае в Perl операторы мономорфны, т.е. у вас есть разные наборы операторов для семантики строк, для числовой семантики, для поразрядной семантики и т.д., где это имеет смысл, а тип операндов в значительной степени не имеет значения. Когда вы применяете числовой оператор к строке, строка сначала преобразуется в число, и вы получаете операцию, которую вы запросили (например, умножение), и когда вы применяете оператор строки к числу, он превращается в строку, и вы выполните операцию, которую вы попросили (например, повторение). Perl обращает внимание на оператор сначала, а типы операндов - только на второй - если действительно он платит им любой разум вообще.

Это противоположность Python и большинства других языков, где вы используете один набор операторов, а типы операндов определяют, какую семантику вы действительно получаете, т.е. операторы являются полиморфными.

Ответ 5

Все ответы, данные до сих пор, не упоминаются, что оператор x работает не только на строковых литералах, но также на строковых переменных или выражениях, которые строят строки:

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

Ответ 6

Если вы хотите напечатать 10 символов "A", вы также можете сделать это

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

Пример с выходом

[email protected]:~$ perl -e 'print "A" x 10'; echo
AAAAAAAAAA
[email protected]:~$