Pergunta

Em Python, se eu fizer isso:

print "4" * 4

I get

> "4444"

Em Perl, eu ia ficar

> 16

Existe uma maneira fácil de fazer o primeiro em Perl?

Foi útil?

Solução

$ perl -e 'print "4"x4; print "\n"'
4444

O operador x é documentado em perldoc perlop . meios aqui binários um operador toma dois argumentos, não composto de bits, pelo caminho.

Binary "x" é o operador de repetição. No contexto escalar ou se o operando à esquerda não está entre parênteses, ele retorna um string consistindo do operando esquerdo repetido o número de vezes especificado pelo direito operando. Em contexto de lista, se o operando esquerdo é colocado entre parênteses ou é uma lista formada por "qw/STRING/", ele repete a lista. Se o direito operando é zero ou negativo, ele retorna uma string vazia ou um vazio lista, dependendo do contexto.

       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 pretende executar código Perl a partir da linha de comando:

$ perl --help
Usage: perl [switches] [--] [programfile] [arguments]
  
  -e program     one line of program (several -e's allowed, omit programfile)

Outras dicas

Em Perl, você quer usar o operador "x".

Observe a diferença entre

"4" x 4

e

("4") x 4

O primeiro produz uma seqüência repetida:

"4444"

este último uma lista repetida:

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

É muito semelhante em Perl

print "4" x 4;

FWIW, é também print 4 x 4 em Perl.

Em geral, em Perl, os operadores são monomórfica, ie. você tem diferentes conjuntos de operadores para a semântica de cordas, para a semântica numéricos, para a semântica bit a bit, etc., em que faz sentido, eo tipo dos operandos em grande parte, não importa. Quando você aplica um operador numérico para uma string, a string é convertida para um número em primeiro lugar e você começa a operação que você pediu (ex. Multiplicação), e quando você aplicar um operador de string para um número, ele se transformou em uma corda e você obter a operação que você pediu (ex. repetição). Perl presta atenção ao operador em primeiro lugar e os tipos de operandos somente em segundo -. Se é que isso lhes paga qualquer mente em tudo

Este é o oposto de Python e outras linguagens, onde você usar um conjunto de operadores, e os tipos dos operandos determinar qual semântica você vai realmente começar - ie. operadores são polimórficos.

Todas as respostas, dadas até agora, faltou mencionar que o x operador não funciona só em strings literais, mas também sobre as variáveis ??de cadeia ou expressões que as cordas de compilação:

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

Se você quiser imprimir 10 caracteres s "A", você também pode fazer isso

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

Exemplo de saída com

user@linux:~$ perl -e 'print "A" x 10'; echo
AAAAAAAAAA
user@linux:~$ 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top