Ich bin relativ neu in Perl und es gibt ein Beispiel Code-Schnipsel in check_ilo2_health.pl, in dem es eine Syntax gibt, die ich nicht verstehe, wie oder warum es funktioniert. Das Code-Snippet analysiert SSL-Client-Daten, in diesem Fall XML, Zeile für Zeile.Perl, Zu Variable von Regex zuordnen
if ($line =~ m/MESSAGE='/) {
my ($msg) = ($line =~ m/MESSAGE='(.*)'/); #<---- HERE
if ($msg !~ m/No error/) {
if ($msg =~ m/Syntax error/) { #...etc
Ein Beispiel für die XML in Frage:
<RESPONSE
STATUS="0x0000"
MESSAGE='No error'
/>
Also in diesem Fall die wenn Anweisung nimmt die MESSAGE Zeile der XML-Probe. Ich verstehe, dass meine ($ msg) behandelt die Variable als eine Art Liste und ich verstehe, wie die regulären Ausdrücke übereinstimmen; Was ich jedoch nicht verstehe, ist die Syntax, die $ msg zu ist. Die Perl scheint mit der Klammern-Syntax herumzuspielen und damit dies funktioniert. Während es funktioniert, würde ich gerne wissen, wie es funktioniert. Jede Hilfe wäre willkommen.
Wenn Sie sich auf die '= ~' oder '! ~' Beziehen, sind dies [Bindeoperatoren] (http://perldoc.perl.org/perlop.html#Binding-Operators). –