Domanda

In Python, se lo faccio:

print "4" * 4

Ottengo

> "4444"

In Perl, vorrei

> 16

C'è un modo semplice per fare il primo in Perl?

È stato utile?

Soluzione

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

L'operatore x è documentato in perldoc perlop . Qui binario significa un operatore che prende due argomenti, non composti da bit, comunque.

  

Binario " x " è l'operatore di ripetizione. Nel contesto scalare o se il   l'operando di sinistra non è racchiuso tra parentesi, restituisce una stringa consistente   dell'operando di sinistra ha ripetuto il numero di volte specificato da destra   operando. Nel contesto dell'elenco, se l'operando di sinistra è racchiuso tra parentesi   oppure è un elenco formato da " qw / STRING / " ;, ripete l'elenco. Se il giusto   l'operando è zero o negativo, restituisce una stringa vuota o vuota   elenco, a seconda del contesto.

       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 ha lo scopo di eseguire il codice Perl dalla riga di comando:

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

Altri suggerimenti

In Perl, vuoi usare la " x " operatore.

Nota la differenza tra

"4" x 4

e

("4") x 4

Il primo produce una stringa ripetuta:

"4444"

quest'ultimo un elenco ripetuto:

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

È molto simile in Perl

print "4" x 4;

FWIW, è anche stampa 4 x 4 in Perl.

In generale, in Perl, gli operatori sono monomorfi, cioè. hai diversi insiemi di operatori per la semantica delle stringhe, per la semantica numerica, per la semantica bit a bit, ecc., dove ha senso, e il tipo di operandi in gran parte non ha importanza. Quando applichi un operatore numerico a una stringa, la stringa viene prima convertita in un numero e ottieni l'operazione che hai richiesto (ad es. Moltiplicazione) e quando applichi un operatore stringa a un numero, viene trasformato in una stringa e ottieni l'operazione richiesta (es. ripetizione). Perl presta attenzione prima all'operatore e ai tipi di operandi solo secondo & # 8211; se davvero ripaga di tutto.

Questo è l'opposto di Python e della maggior parte delle altre lingue, in cui usi una serie di operatori, e i tipi di operandi determinano quale semantica otterrai effettivamente # # 8211; vale a dire. gli operatori sono polimorfici.

Tutte le risposte, date finora, non hanno menzionato il fatto che l'operatore x non funziona solo sui valori letterali delle stringhe ma anche su variabili o espressioni di stringhe che creano stringhe:

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

Se vuoi stampare 10 caratteri "A", puoi farlo anche

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

Esempio con output

user@linux:~$ perl -e 'print "A" x 10'; echo
AAAAAAAAAA
user@linux:~$ 
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top