2013-07-17 20 views
6

Was ist der Unterschied zwischen [email protected] und $! in Perl? Fehler, die mit eval verbunden sind, werden unter Verwendung von [email protected] ausgegeben. $! wird auch zum Erfassen des Fehlers verwendet. Was ist der Unterschied zwischen beiden?

Antwort

14

Von perldoc perlvar:

Die Variablen [email protected], $!, $^E und $? Informationen über die verschiedenen Arten von Fehlerbedingungen enthalten, die während der Ausführung eines Perl-Programm erscheinen. Die Variablen werden geordnet nach der "Entfernung" zwischen dem Subsystem, das den Fehler gemeldet hat, und dem Perl-Prozess angezeigt. Sie entsprechen Fehlern, die vom Perl-Interpreter, der C-Bibliothek, dem Betriebssystem oder einem externen Programm erkannt wurden.

3

$! wird gesetzt, wenn ein Systemanruf fehlschlägt.

open my $fh, '<', '/foobarbaz' or die $! 

Dies wird sterben Ausgabe "Keine solche Datei oder Verzeichnis".

[email protected] enthält das Argument, das an die übergeben wurde. Deshalb:

eval { 
    open my $fh, '<', '/foobarbaz' or die $! 
}; 
if ([email protected]) { 
    warn "Caught exception: [email protected]"; 
} 

es keinen Sinn machen, zu überprüfen [email protected] ohne irgendeine Form von eval zu verwenden und es macht nicht Sinn $! zu überprüfen, wenn Sie nicht eine Funktion namens haben, dass es im Fall eines Fehlers eingestellt wird.

Verwandte Themen