Frage

Gibt es einen Unterschied zwischen den beiden folgenden Beispielen für den Beginn eines Perl-Skript? Wenn ja, wann würde ich einen über den anderen verwenden?

Beispiel 1:

#!/usr/bin/perl

use warnings;

Beispiel 2:

#!/usr/bin/perl -w
War es hilfreich?

Lösung

den Schalter setzen Sie alle Warnungen in alle Module von Ihrem Programm verwendet ermöglichen. Mit dem Pragma Sie es nur in diesem speziellen Modul (oder Script) aktivieren. Idealerweise verwenden Sie Warnungen in allen Modulen, aber das ist oft nicht der Fall. mit dem Schalter können Sie viele Warnungen erhalten, wenn Sie einen Dritten Modul verwenden, die nicht Warnungen sicher ist.

Also, im Idealfall spielt es keine Rolle, aber pragmatisch vorzuziehen ist es oft für die Endbenutzer den Schalter nicht zu verwenden, sondern die Pragma.

Andere Tipps

Die -w Befehlszeilenschalter schaltet Warnungen global für den gesamten Dolmetscher. Auf der anderen Seite ist use warnings eine „lexikalische Pragma“ und gilt nur für den lexikalischen Bereich, in dem es verwendet wird. Normalerweise stellen Sie, dass an der Spitze einer Datei, so dass es auf die ganze Datei gilt, aber Sie können auch Umfang es auf bestimmte Blöcke. Darüber hinaus können Sie no warnings verwenden, um sie vorübergehend in einem Block zu deaktivieren, in Fällen, in denen Sie sonst tun müssen, um verhaltens Warnung zu erzeugen. Sie können das nicht tun, wenn Sie noch -w auf bekommen.

Weitere Informationen darüber, wie lexikalische Warnungen arbeiten, einschließlich, wie verschiedene Untergruppen von ihnen ein und aus schalten, finden Sie in der perllexwarn Dokument.

„- w“ älter und verwendet wird, ist der einzige Weg, um drehen Warnungen auf (eigentlich „-w“ ermöglicht nur den globalen $ ^ W variabel). „Verwenden Warnungen;“ jetzt bevorzugt wird (ab Version 5.6.0 und höher), weil (wie bereits erwähnt) ein lexikalisches hat statt globaler Reichweite und Sie können spezifische Warnungen ein- / auszuschalten. Und vergessen Sie nicht, auch mit zu beginnen „use strict;“ : -)

Ein weiterer Unterschied erwähnenswert ist, dass die „Verwendung Warnungen“ Pragma auch können Sie bestimmte Warnungen wählen zu ermöglichen (und ebenfalls „keine Warnungen“ können Sie Warnungen auswählen deaktivieren).

Neben der Aktivierung / Deaktivierung bestimmter Behauptungen der Pragma verwenden, können Sie auch einige oder alle Warnungen zu Fehlern fördern:

use strict;
use warnings FATAL => 'all', NONFATAL => 'exec';

Sie beide! Immer!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top