hotti: Problem mit Tie::Scalar

Beitrag lesen

hi,

kann den Fehler einfach nicht finden. Untenstehendes kleines Modul bindet ein Scalar an eine Klasse. Beim Aufruf in der main wird die Variable hochgezählt, aber nach der 26 gehts bei 2 wieder von vorn los. Eigenartigerweise klappt die Erhöhung, wenn eine Schleife drumgelegt wird.

Idee's ???

Hotti

  
  
package Number;  
  
use strict;  
use Fcntl qw(:DEFAULT :flock);  
use Tie::Scalar;  
use vars qw(@ISA);  
@ISA = qw(Tie::StdScalar);  
use warnings;  
  
my $FH; # File Handle  
  
# Konstruktor  
sub TIESCALAR{  
	my $class = shift;  
	# Repository File, Schreibberechtigung sicherstellen!  
	my $file =  shift || '/tmp/number.bin';  
	  
	sysopen($FH, $file, O_RDWR|O_CREAT) or return;  
	flock $FH, LOCK_EX;  
	binmode $FH;  
	my $bin = undef;  
	read $FH, $bin, 4;  
	my $nr = unpack("N", $bin) || 1;  
	return bless \$nr, $class;  
}  
  
# Schreibe die Nummer zurück in die Repository  
sub DESTROY{  
	my $self = shift;  
	truncate $FH, 0;  
	seek $FH, 0, 0;  
	print $FH pack "N", $$self;  
	close $FH;  
	#print "\nDESTROY\n";  
}  
###########################################################################  
1;  
###########################################################################  
  
package main;  
tie(my $c, 'Number') or die $!;  
$c++;  
print $c;