Wie kann ich feststellen, ob ein Perl-Hash eine Schlüsselzuordnung auf einen nicht definierten Wert enthält?

7

Ich muss feststellen, ob ein Perl-Hash einen bestimmten Schlüssel hat, aber dieser Schlüssel wird einem undef-Wert zugeordnet. Insbesondere besteht die Motivation darin, boolesche Flags zu sehen, während getopt() mit einer darin übergebenen Hash-Referenz verwendet wird. Ich habe bereits sowohl diese Seite als auch Google durchsucht, und exists() und defined() scheinen für die Situation nicht anwendbar zu sein, sie sehen nur, ob der Wert für einen bestimmten Schlüssel nicht definiert ist, sie prüfen nicht, ob der Hash hat tatsächlich den Schlüssel. Wenn ich hier ein RTFM bin, verweisen Sie mich bitte auf das Handbuch, das dies erklärt.

    
Alex Marshall 23.01.2010, 22:17
quelle

3 Antworten

26
  

exists () und defined () scheinen für die Situation nicht anwendbar zu sein, sie sehen nur, ob der Wert für einen bestimmten Schlüssel nicht definiert ist, sie prüfen nicht, ob der Hash tatsächlich den Schlüssel

hat

Falsch. Das ist tatsächlich, was defined() macht, aber exists() macht genau das, was Sie wollen:

%Vor%

erzeugt:

%Vor%

Die Dokumentation für diese beiden Funktionen steht in der Befehlszeile unter perldoc -f defined und perldoc -f exists zur Verfügung (oder lesen Sie die Dokumentation für alle Methoden unter perldoc perlfunc *). Die offizielle Webdokumentation ist hier:

* Da Sie RTFM ausdrücklich erwähnt haben und Ihnen möglicherweise die Speicherorte der Perl-Dokumentation nicht bekannt sind, lassen Sie mich auch darauf hinweisen, dass Sie einen vollständigen Index aller perldocs bei perldoc perl oder bei Ссылка .

    
Ether 23.01.2010, 23:09
quelle
11

Wenn ich Ihre Frage richtig bin zu lesen, ich glaube, Sie sind verwirrt über existiert . Aus der Dokumentation:

  

existiert EXPR

     

Gegeben ein Ausdruck, der a angibt   Hash-Element oder Array-Element, kehrt zurück   true, wenn das angegebene Element in der   Hash oder Array war jemals   initialisiert, auch wenn das entsprechende   Wert ist nicht definiert.

Zum Beispiel:

%Vor%     
FMc 23.01.2010 22:31
quelle
6

Kurze Antwort:

%Vor%     
Adam Kennedy 24.01.2010 02:12
quelle

Tags und Links