Perl-Operatoren

Operatoren sind Symbole, die den Compiler anweisen, bestimmte mathematische oder logische Operationen auszuführen, wie zum Beispiel: 3+2=5.

Die Sprache Perl verfügt über einen reichen Satz integrierter Operatoren. Schauen wir uns die häufig verwendeten an:


Arithmetische Operatoren

In den folgenden Tabellenbeispielen setzen wir die Variable $a auf 10 und $b auf 20.

Operator Beschreibung Beispiel
+ Additionsoperation $a + $b Ergebnis ist 30
- Subtraktionsoperation $a - $b Ergebnis ist -10
* Multiplikationsoperation $a * $b Ergebnis ist 200
/ Divisionsoperation $b / $a Ergebnis ist 2
% Modulus-Operation, Rest nach der Division $b % $a Ergebnis ist 0
** Potenzierung$a**$b Ergebnis ist 10 hoch 20

Beispiel

#!/usr/bin/perl $a = 10; $b = 20; print "\$a = $a , \$b = $b\n"; $c = $a + $b; print '$a + $b = ' . $c . "\n"; $c = $a - $b; print '$a - $b = ' . $c . "\n"; $c = $a * $b; print '$a * $b = ' . $c . "\n"; $c = $a / $b; print '$a / $b = ' . $c . "\n"; $c = $a % $b; print '$a % $b = ' . $c. "\n"; $a = 2; $b = 4; $c = $a ** $b; print '$a ** $b = ' . $c . "\n";

Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:

$a = 10 , $b = 20
$a + $b = 30
$a - $b = -10
$a * $b = 200
$a / $b = 0.5
$a % $b = 10
$a ** $b = 16

Vergleichsoperatoren

In den folgenden Tabellenbeispielen setzen wir die Variable $a auf 10 und $b auf 20.

Operator Beschreibung Beispiel
== Prüft, ob die Werte zweier Operanden gleich sind. Wenn gleich, ist die Bedingung wahr, andernfalls falsch. ($a == $b) ist falsch
!= Prüft, ob die Werte zweier Operanden gleich sind. Wenn nicht gleich, ist die Bedingung wahr, andernfalls falsch. ($a != $b) ist wahr.
<=> Prüft, ob die Werte zweier Operanden gleich sind. Gibt -1 zurück, wenn die linke Zahl kleiner als die rechte Zahl ist, 0, wenn sie gleich sind, und 1, wenn die linke Zahl größer als die rechte Zahl ist. ($a <=> $b) gibt -1 zurück.
> Prüft, ob der Wert des linken Operanden größer als der Wert des rechten Operanden ist. Wenn ja, ist die Bedingung wahr, andernfalls falsch. ($a > $b) gibt false zurück.
< Prüft, ob der Wert des linken Operanden kleiner als der Wert des rechten Operanden ist. Wenn ja, ist die Bedingung wahr, andernfalls wird false zurückgegeben. ($a < $b) gibt true zurück.
>= Prüft, ob der Wert des linken Operanden größer als oder gleich dem Wert des rechten Operanden ist. Wenn ja, ist die Bedingung wahr, andernfalls wird false zurückgegeben. ($a >= $b) gibt false zurück.
<= Prüft, ob der Wert des linken Operanden kleiner oder gleich dem Wert des rechten Operanden ist. Wenn ja, ist die Bedingung true, andernfalls wird false zurückgegeben. ($a <= $b) gibt true zurück.

Beispiel

#!/usr/bin/perl $a = 10; $b = 20; print "\$a = $a , \$b = $b\n"; if( $a == $b ){ print "$a == \$b Ergebnis true\n"; }else{ print "\$a == \$b Ergebnis false\n"; } if( $a != $b ){ print "\$a != \$b Ergebnis true\n"; }else{ print "\$a != \$b Ergebnis false\n"; } $c = $a <=> $b; print "\$a <=> \$b gibt zurück$c\n"; if( $a > $b ){ print "\$a > \$b Ergebnis true\n"; }else{ print "\$a > \$b Ergebnis false\n"; } if( $a >= $b ){ print "\$a >= \$b Ergebnis true\n"; }else{ print "\$a >= \$b Ergebnis false\n"; } if( $a < $b ){ print "\$a < \$b Ergebnis true\n"; }else{ print "\$a < \$b Ergebnis false\n"; } if( $a <= $b ){ print "\$a <= \$b Ergebnis true\n"; }else{ print "\$a <= \$b Ergebnis false\n"; }

Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:

$a = 10 , $b = 20
$a == $b 结果 false
$a != $b 结果 true
$a <=> $b 返回 -1
$a > $b 结果 false
$a >= $b 结果 false
$a < $b 结果 true
$a <= $b 结果 true

In den folgenden Tabellenbeispielen setzen wir die Variable $a auf "abc" und $b auf "xyz" und verwenden dann Vergleichsoperatoren, um die Ergebnisse zu berechnen.

Operator Beschreibung Beispiel
lt Prüft, ob die Zeichenkette auf der linken Seite kleiner als die Zeichenkette auf der rechten Seite ist. Wenn ja, wird true zurückgegeben, andernfalls wird false zurückgegeben. ($a lt $b) gibt true zurück.
gt Prüft, ob die Zeichenkette links größer als die Zeichenkette rechts ist. Wenn ja, gibt true zurück, andernfalls gibt false zurück. ($a gt $b) gibt false zurück.
le Prüft, ob die Zeichenkette links kleiner oder gleich der Zeichenkette rechts ist. Wenn ja, gibt true zurück, andernfalls gibt false zurück. ($a le $b) gibt true zurück
ge Prüft, ob die Zeichenkette links größer oder gleich der Zeichenkette rechts ist. Wenn ja, gibt true zurück, andernfalls gibt false zurück. ($a ge $b) gibt false zurück.
eq Prüft, ob die Zeichenkette links gleich der Zeichenkette rechts ist. Wenn ja, gibt true zurück, andernfalls gibt false zurück. ($a eq $b) gibt false zurück.
ne Prüft, ob die Zeichenkette links nicht gleich der Zeichenkette rechts ist. Wenn ja, gibt true zurück, andernfalls gibt false zurück. ($a ne $b) gibt true zurück
cmp Gibt 1 zurück, wenn die linke Zeichenkette größer als die rechte Zeichenkette ist, gibt 0 zurück, wenn sie gleich sind, und gibt -1 zurück, wenn die linke Zeichenkette kleiner als die rechte Zeichenkette ist. ($a cmp $b) gibt -1 zurück.

Beispiel

#!/usr/bin/perl $a = "abc"; $b = "xyz"; print "\$a = $a ,\$b = $b\n"; if( $a lt $b ){ print "$a lt \$b gibt true zurück\n"; }else{ print "\$a lt \$b gibt false zurück\n"; } if( $a gt $b ){ print "\$a gt \$b gibt true zurück\n"; }else{ print "\$a gt \$b gibt false zurück\n"; } if( $a le $b ){ print "\$a le \$b gibt true zurück\n"; }else{ print "\$a le \$b gibt false zurück\n"; } if( $a ge $b ){ print "\$a ge \$b gibt true zurück\n"; }else{ print "\$a ge \$b gibt false zurück\n"; } if( $a ne $b ){ print "\$a ne \$b gibt true zurück\n"; }else{ print "\$a ne \$b gibt false zurück\n"; } $c = $a cmp $b; print "\$a cmp \$b gibt zurück$c\n";

Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:

$a = abc ,$b = xyz
abc lt $b 返回 true
$a gt $b 返回 false
$a le $b 返回 true
$a ge $b 返回 false
$a ne $b 返回 true
$a cmp $b 返回 -1

Zuweisungsoperatoren

In den folgenden Tabellenbeispielen setzen wir die Variable $a auf 10 und $b auf 20.

Operator Beschreibung Beispiel
= Einfacher Zuweisungsoperator, weist den Wert des rechten Operanden dem linken Operanden zu $c = $a + $b weist den Wert von $a + $b $c zu
+= Additions- und Zuweisungsoperator, weist dem linken Operanden das Ergebnis der Addition des rechten Operanden zum linken Operanden zu $c += $a ist äquivalent zu $c = $c + $a
-= Subtraktions- und Zuweisungsoperator, weist dem linken Operanden das Ergebnis der Subtraktion des rechten Operanden vom linken Operanden zu $c -= $a ist äquivalent zu $c = $c - $a
*= Multiplikations- und Zuweisungsoperator, weist dem linken Operanden das Ergebnis der Multiplikation des rechten Operanden mit dem linken Operanden zu $c *= $a ist äquivalent zu $c = $c * $a
/= Divisions- und Zuweisungsoperator, weist dem linken Operanden das Ergebnis der Division des linken Operanden durch den rechten Operanden zu $c /= $a entspricht $c = $c / $a
%= Modulo- und Zuweisungsoperator, bildet den Modulo der beiden Operanden und weist ihn dem linken Operanden zu $c %= $a entspricht $c = $c % a
**= Potenzierungs- und Zuweisungsoperator, berechnet die Potenz der beiden Operanden und weist sie dem linken Operanden zu $c **= $a entspricht $c = $c ** $a

Beispiel

#!/usr/bin/perl $a = 10; $b = 20; print "\$a = $a ,\$b = $b\n"; $c = $a + $b; print "Nach der Zuweisung\$c = $c\n"; $c += $a; print "\$c = $c, Operationsanweisung\$c += \$a\n"; $c -= $a; print "\$c = $c, Operationsanweisung\$c -= \$a\n"; $c *= $a; print "\$c = $c, Operationsanweisung\$c *= \$a\n"; $c /= $a; print "\$c = $c , Operationsanweisung \$c/= \$a\n"; $c %= $a; print "\$c = $c, Operationsanweisung \$c %= \$a\n"; $c = 2; $a = 4; print "\$a = $a , \$c = $c\n"; $c **= $a; print "\$c = $c, Operationsanweisung \$c **= \$a\n";

Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:

$a = 10 ,$b = 20
赋值后 $c = 30
$c = 40 ,运算语句 $c += $a
$c = 30 ,运算语句 $c -= $a
$c = 300 ,运算语句 $c *= $a
$c = 30 ,运算语句 $c /= $a
$c = 0 ,运算语句 $c %= $a
$a = 4 , $c = 2
$c = 16 ,运算语句 $c **= $a

Bitweise Operationen

Bitweise Operatoren wirken auf Bits und führen Operationen Bit für Bit aus.

Setzen Sie $a = 60, $b = 13. Im Binärformat dargestellt sehen sie wie folgt aus:

$a = 0011 1100

$b = 0000 1101

-----------------

$a&$b = 0000 1100

$a|$b = 0011 1101

$a^$b = 0011 0001

~$a  = 1100 0011

Die von Perl unterstützten bitweisen Operatoren sind in der folgenden Tabelle aufgeführt:

Operator Beschreibung Beispiel
& Wenn er in beiden Operanden vorhanden ist, kopiert der binäre AND-Operator ein Bit in das Ergebnis. ($a & $b) ergibt 12, was binär 0000 1100 ist
| Wenn er in einem der Operanden vorhanden ist, kopiert der binäre OR-Operator ein Bit in das Ergebnis. ($a | $b) ergibt 61, binär 0011 1101
^ Der binäre XOR-Operator kopiert ein Bit in das Ergebnis, wenn es in einem der beiden Operanden, aber nicht in beiden, vorkommt. ($a ^ $b) ergibt 49, binär 0011 0001
~ Der binäre Einerkomplement-Operator ist ein unärer Operator und bewirkt ein "Umdrehen" der Bits, das heißt, 0 wird zu 1, 1 wird zu 0. (~$a ) ergibt -61, binär 1100 0011, die Einerkomplementform einer vorzeichenbehafteten Binärzahl.
<< Binärer Linksverschiebungsoperator. Der Wert des linken Operanden wird um die Anzahl an Bits nach links verschoben, die der rechte Operand angibt. $a << 2 ergibt 240, binär 1111 0000
>> Binärer Rechtsverschiebungsoperator. Der Wert des linken Operanden wird um die Anzahl an Bits nach rechts verschoben, die der rechte Operand angibt. $a >> 2 ergibt 15, binär 0000 1111

Beispiel

#!/usr/bin/perl use integer; $a = 60; $b = 13; print "\$a = $a , \$b = $b\n"; $c = $a & $b; print "\$a & \$b = $c\n"; $c = $a | $b; print "\$a | \$b = $c\n"; $c = $a ^ $b; print "\$a ^ \$b = $c\n"; $c = ~$a; print "~\$a = $c\n"; $c = $a << 2; print "\$a << 2 = $c\n"; $c = $a >> 2; print "\$a >> 2 = $c\n";

Die Ausgabe des obigen Programms ist:

$a = 60 , $b = 13
$a & $b = 12
$a | $b = 61
$a ^ $b = 49
~$a = -61
$a << 2 = 240
$a >> 2 = 15

Logische Operatoren

Perl logische Operatoren sind in der folgenden Tabelle dargestellt.

In den Tabellenbeispielen setzen wir die Variable $a auf wahr, $b auf falsch.

Operator Beschreibung Beispiel
und Logischer UND-Operator. Wenn beide Operanden wahr sind, ist die Bedingung wahr. ($a and $b) ist falsch.
&& Logischer UND-Operator im C-Stil. Wenn beide Operanden wahr sind, ist die Bedingung wahr. ($a && $b) ist falsch.
oder Logischer OR-Operator. Wenn einer der Operanden ungleich null ist, ist die Bedingung wahr. ($a or $b) ist wahr.
|| Logischer OR-Operator im C-Stil. Wenn einer der Operanden ungleich null ist, ist die Bedingung wahr. ($a || $b) ist wahr.
not Logischer NOT-Operator. Wird verwendet, um den logischen Zustand des Operanden umzukehren. Wenn die Bedingung wahr ist, macht der logische NOT-Operator sie falsch. not($a and $b) ist wahr.

Beispiel

#!/usr/bin/perl $a = true; $b = false; print "\$a = $a , \$b = $b\n"; $c = ($a and $b); print "\$a and \$b = $c\n"; $c = ($a && $b); print "\$a && \$b = $c\n"; $c = ($a or $b); print "\$a or \$b = $c\n"; $c = ($a || $b); print "\$a || \$b = $c\n"; $a = 0; $c = not($a); print "not(\$a)= $c\n";

Die Ausgabe des obigen Programms ist:

$a = true , $b = false
$a and $b = false
$a && $b = false
$a or $b = true
$a || $b = true
not($a)= 1

Quote-Operationen

Perl-Quote-Operatoren sind in der folgenden Tabelle aufgeführt.

Operator Beschreibung Beispiel
q{ } Fügt einfache Anführungszeichen um eine Zeichenkette hinzu q{abcd} ergibt 'abcd'
qq{ } Fügt doppelte Anführungszeichen um eine Zeichenkette hinzu qq{abcd} ergibt "abcd"
qx{ } Fügt Backticks um eine Zeichenkette hinzu qx{abcd} ergibt `abcd`

Beispiel

#!/usr/bin/perl $a = 10; $b = q{a = $a}; print "q{a = \$a} = $b\n"; $b = qq{a = $a}; print "qq{a = \$a} = $b\n"; # Ausführen mit dem Unix-Befehl date $t = qx{date}; print "qx{date} = $t\n";

Die Ausgabe des obigen Programms ist:

q{a = $a} = a = $a
qq{a = $a} = a = 10
qx{date} = 2016年 6月10日 星期五 16时22分33秒 CST

Weitere Operatoren

Neben den oben erwähnten Operatoren unterstützt Perl auch die folgenden Operatoren:

Operator Beschreibung Beispiel
. Der Punkt (.) wird verwendet, um zwei Zeichenketten zu verketten. Wenn $a="run", $b="oob", dann ergibt $a.$b "example"
x Der x-Operator gibt die Zeichenkette zurück, die eine angegebene Anzahl von Malen wiederholt wird. ('-' x 3) gibt --- aus.
.. .. ist der Bereichsoperator. (2..5) gibt (2, 3, 4, 5) aus
++ Inkrementoperator, erhöht den ganzzahligen Wert um 1 $a =10, $a++ gibt 11 aus
-- Dekrementoperator, verringert den ganzzahligen Wert um 1 $a =10, $a-- gibt 9 aus
-> Der Pfeil wird verwendet, um eine Methode einer Klasse anzugeben$obj->$a repräsentiert die Methode $a des Objekts $obj.

Beispiel

#!/usr/bin/perl $a = "run"; $b = "oob"; print "\$a = $a , \$b = $b\n"; $c = $a . $b; print "\$a . \$b = $c\n"; $c = "-" x 3; print "\"-\" x 3 = $c\n"; @c = (2..5); print "(2..5) = @c\n"; $a = 10; $b = 15; print "\$a = $a , \$b = $b\n"; $a++; $c = $a ; print "\$a führt\$a++ = $c\n"; $b--; $c = $b ; print aus "\$b führt aus\$b-- = $c\n";

Die Ausgabe des obigen Programms ist:

$a  = run , $b = oob
$a . $b = example
"-" x 3 = ---
(2..5) = 2 3 4 5
$a  = 10 , $b = 15
$a 执行 $a++ = 11
$b 执行 $b-- = 14

Operatorrangfolge

Die folgende Tabelle listet die Operatorrangfolge der Sprache Perl auf:

OperatorAssoziativität
++, --Keine
-, ~, !Von rechts nach links
**Von rechts nach links
=~, !~Von links nach rechts
*, /, %, xVon links nach rechts
+, -, .Von links nach rechts
<<, >>Von links nach rechts
-e, -r,Keine
<, <=, >, >=, lt, le, gt, geVon links nach rechts
==, !=, <=>, eq, ne, cmpVon links nach rechts
&Von links nach rechts
|, ^Von links nach rechts
&&Von links nach rechts
||Von links nach rechts
..Von links nach rechts
? and :Von rechts nach links
=, +=, -=, *=,Von rechts nach links
Sonstiges
,Von links nach rechts
notVon links nach rechts
undVon links nach rechts
or, xorVon links nach rechts

Beispiel

#!/usr/bin/perl $a = 20; $b = 10; $c = 15; $d = 5; $e; print "\$a = $a, \$b = $b, \$c = $c ,\$d = $d\n"; $e = ($a + $b) * $c / $d; print "(\$a + \$b) * \$c / \$d = $e\n"; $e = (($a + $b) * $c )/ $d; print "((\$a + \$b) * \$c) / \$d = $e\n"; $e = ($a + $b) * ($c / $d); print "(\$a + \$b) * (\$c / \$d ) = $e\n"; $e = $a + ($b * $c ) / $d; print "\$a + (\$b * \$c )/ \$d = $e\n";

Die Ausgabe des obigen Programms ist:

$a  = 20, $b = 10, $c = 15 ,$d = 5
($a + $b) * $c / $d  = 90
(($a + $b) * $c) / $d  = 90
($a + $b) * ($c / $d )  = 90
$a + ($b * $c )/ $d  = 50
Andere Erweiterungen