Thread Warum kein $@ statt $! (29 answers)
Opened by rosti at 2014-09-23 13:04

rosti
 2014-09-28 07:36
#177556 #177556
User since
2011-03-19
3197 Artikel
BenutzerIn
[Homepage]
user image
2014-09-25T09:04:48 GwenDragon
eval schluckt bei deinen Programmcode mit Perl 5.14 ca. 6% Laufzeit. Überprüfe es mal mit Benchmark.


Das Laufzeitverhalten lässt sich verbessern:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl

use strict;
use warnings;
use Carp;

sub new{
    my $class = shift;
    my $arg = shift;
    return eval{ croak "Argument ist nicht definiert"} 
        unless defined $arg;
    return bless{ 
        ARG => $arg,
    }, $class;
}

my $main = main->new() or die "Die Instanz konnte nicht erstellt werden, Fehler: $@";


Indem eval nur für den Fehlerfall greift. Auch hier wird über die API nicht $@ befragt ob es einen Fehler gab, sondern der Rückgabewert des Konstruktors. Dem Anwender der API steht es also frei, $@ zu verwenden.

In meinem Artikel http://rolfrost.de/perlmod.html gehe ich speziell auf das Thema "Perl Module für den Eigenbedarf" ein, gerade was das "Stiefkind Fehlerbehandlung" betrifft.

Schönen Sonntag ;)

View full thread Warum kein $@ statt $!