Eine subtile untie-Falle

Wenn Sie die von tie oder tied zurückgelieferten Objekte nutzen wollen und wenn die Klasse einen Destruktor definiert, dann gibt es eine subtile Falle, vor der Sie sich hüten müssen. Betrachten Sie das nachfolgende (zugegebenermaßen gekünstelte) Beispiel einer Klasse, die eine Datei nutzt, um alle Werte festzuhalten, die einem Skalar zugewiesen wurden:[137]

package Remember; sub TIESCALAR { my $class = shift; my $filename = shift; open(my $handle, ">", $filename) or die "Kann $filename nicht öffnen: $!\n"; print $handle "Der Anfang\n"; bless {FH => $handle, VALUE => 0}, $class; } sub FETCH { my $self = shift; return $self->{VALUE}; } sub STORE { my $self = shift; my $value = shift; my $handle = $self->{FH}; print $handle ...

Get Programmieren mit Perl now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.