Frage

In Python, wenn ich dies tun:

print "4" * 4

ich

> "4444"

In Perl, würde ich bekommen

> 16

Gibt es einen einfachen Weg, um die ehemaligen in Perl?

zu tun
War es hilfreich?

Lösung

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

Der x Operator wird dokumentiert in perldoc perlop . Hier binäre bedeutet einen Operator zwei Argumente nehmen, nicht von Bits zusammengesetzt, durch die Art und Weise.

  

Binary "x" ist der Wiederholungsoperator. Im skalaren Kontext oder wenn die   linker Operand ist nicht in Klammern eingeschlossen, gibt es einen String aus   des linken Operanden wiederholt die Anzahl der von der rechten Seite angegeben   Operand. Im Listenkontext wird, wenn der linke Operand in Klammern   oder ist eine Liste von „qw/STRING/“ gebildet, um die Liste wiederholt. Wenn das Recht   Operanden Null oder negativ ist, es gibt eine leere Zeichenfolge oder eine leere   Liste, je nach Kontext.

       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 sollte Perl-Code von der Befehlszeile ausgeführt werden:

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

Andere Tipps

In Perl, wollen Sie den "x" Operator verwenden.

Beachten Sie den Unterschied zwischen

"4" x 4

und

("4") x 4

Die ehemalige erzeugt eine wiederholte Zeichenfolge:

"4444"

letztere eine wiederholte Liste:

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

Es ist sehr ähnlich in Perl

print "4" x 4;

FWIW, es ist auch print 4 x 4 in Perl.

In der Regel in Perl, Operatoren sind monomorphic, dh. Sie haben verschiedene Sätze von Operatoren für String-Semantik, für numerische Semantik, für bitweise Semantik usw., wo es Sinn macht, und die Art der Operanden weitgehend keine Rolle spielt. Wenn Sie einen numerischen Operator auf einen String anwenden, wird der String zuerst in eine Zahl umgewandelt und Sie den Vorgang erhalten Sie gefragt (z. B. Multiplikation), und wenn Sie einen String-Operator auf eine Reihe anwenden, wird es in einen String gedreht und Sie holen Sie sich die Operation, die Sie gefragt (zB. Wiederholung). Perl achtet auf die Betreiber erste und die Typen der Operanden nur an zweiter Stelle -. Wenn in der Tat es ihnen jeden Geist überhaupt zahlt

Diese

ist das Gegenteil von Python und die meisten anderen Sprachen, in denen Sie einen Satz von Operatoren, und die Typen der Operanden bestimmen, welche Semantik Sie tatsächlich bekommen werden - dh. Betreiber sind polymorph.

Alle Antworten, da bisher verpasst zu erwähnen, dass der Bediener x nur auf Stringliterale nicht funktioniert, sondern auch auf String-Variablen oder Ausdrücke, die Zeichenketten bauen:

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

Wenn Sie 10 Zeichen „A“ s drucken, können Sie dies auch

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

Beispiel mit Ausgang

user@linux:~$ perl -e 'print "A" x 10'; echo
AAAAAAAAAA
user@linux:~$ 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top