Welches Sicherheitsnetz verwenden Sie?
Verwenden Sie Warnungen;
oder
verwenden Sie streng;
Ich weiß das
Ein potenzielles Problem, das bei der Verwendung auftritt streng; wird Ihren Code stoppen sofort wenn es angetroffen wird, während Warnungen verwenden; wird nur geben Warnung (wie der Befehlszeilenschalter -w) und lassen Sie Ihren Code laufen.
Ich möchte immer noch wissen, welches von den Perl-Programmierern am häufigsten benutzt wird. Welchen haben sie am häufigsten benutzt?
use strict
erzeugt einen Fehler, wenn Sie symbolische Referenzen verwenden (dh Zeichenfolgen, die Namen von Symbolen darstellen). Es erzeugt einen Fehler, wenn Sie eine Variable verwenden, ohne sie zu deklarieren (dies fördert die Verwendung von lexikalischen ' my
' Variablen, ist aber auch erfüllt, wenn Sie Paket-Globals richtig deklarieren). Es erzeugt auch einen Fehler, wenn Sie Barcodes im Script herumhängen lassen (im Gegensatz zu Anführungsstrichen, die durch Perls Anführungszeichen definiert werden). Mit ' strict
' können Sie drei Kategorien von Strikturen aktivieren oder deaktivieren, und zwar innerhalb von Bereichsblöcken. Es ist eine bewährte Methode, Strictures zu aktivieren, obwohl gelegentlicher Code erfordert, dass einige seiner Features lokal deaktiviert sind. Man sollte jedoch lange darüber nachdenken, ob dies wirklich notwendig ist und ob ihre Lösung ideal ist. Sie können über Strictures in Perl's POD mit dem Titel 'strict' lesen.
use warnings
generiert eine Warnmeldung basierend auf vielen Kriterien, die im POD 'perllexwarn' beschrieben sind. Diese Warnungen haben nichts mit Strikten zu tun, sondern achten auf die häufigsten "Fehler", denen man bei ihrer Programmierung begegnet. Es empfiehlt sich, beim Schreiben von Skripts Warnungen zu verwenden. In einigen Fällen, in denen die Nachricht möglicherweise unerwünscht ist, kann eine bestimmte Warnkategorie in einem Bereich lokal deaktiviert sein. Zusätzliche Informationen sind in 'Warnungen' beschrieben.
use diagnostics
macht die Warnungen ausführlicher, und in einer Entwicklungs- oder Lernumgebung, insbesondere bei Neuankömmlingen, ist dies sehr wünschenswert. Die Diagnose würde wahrscheinlich aus einem "Endprodukt" herausfallen, aber während der Entwicklung können sie eine wirklich nette Ergänzung zu den normalerweise erzeugten knappen Nachrichten sein. Sie können über die Diagnose in der Perl POD "Diagnose" lesen.
Es gibt keinen Grund, sich dazu zu zwingen, nur eine der oben genannten Optionen zu verwenden. Insbesondere Warnungen verwenden und strikt verwenden sollte in der Regel in modernen Perl-Programmen verwendet werden.
In allen Fällen (mit Ausnahme der Diagnose, die Sie ohnehin nur für die Entwicklung verwenden) können einzelne Strictures oder Warnungen lexikalisch deaktiviert sein. Außerdem können ihre Fehler mit eval{ .... }
, mit Try::Tiny
's try / catch-Blöcken und einigen anderen Möglichkeiten abgefangen werden. Wenn es Bedenken hinsichtlich einer Nachricht gibt, die einem potenziellen Angreifer mehr Informationen über ein Skript gibt, könnten die Nachrichten an eine Protokolldatei weitergeleitet werden. Wenn das Risiko besteht, dass diese Protokolldatei viel Speicherplatz verbraucht, gibt es ein größeres Problem, und die Ursache des Problems sollte entweder behoben werden oder in seltenen Fällen einfach deaktiviert werden.
Perl-Programme sollten heutzutage sehr streng / warnen als Best Practice.
Beides natürlich. Wenn Perl heute entworfen würde, verwenden Sie strikt und verwenden Warnungen wäre das Standardverhalten. Es ist einfach so, dass Warnungen in einem Compiler aktiviert sind - warum sollten Sie das nicht standardmäßig tun?
Was Sie haben, fängt nicht einmal an, genug zu sein.
Ich benutze einen Code, der das als Ausgangspunkt verwendet. Es funktioniert gut in meiner Umgebung, obwohl wie immer Ihre Laufleistung variieren kann.
%Vor%In der Perl Unicode-Werkzeugkiste , derzeit bis zu etwa 50 Dateien, die vom Einfachen bis zum Erhabenen reichen.
Verwenden Sie beide, wie die verlinkte Seite sagt.
Die Dokumentation ist vielleicht etwas unklar. use strict
und use warnings
haben unterschiedliche Probleme; use strict
wird nicht bewirken, dass Ihr Programm sofort beendet wird, wenn nur Warnungen angezeigt werden, nur wenn Sie die strengen Syntaxanforderungen verletzen. Sie werden immer noch nur Warnungen erhalten, wenn Ihr Code weniger schwerwiegende Fehler macht.
Tags und Links perl encoding stack-trace coding-style boilerplate