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;