Все другие функции класса знают, что они методы, и спокойно отлавливают объект первым параметром.
Если же в следующую функцию перед переменной $mes поместить переменную для объекта ($self), сообщение не выводится (то есть оно записывается в $self а не $mes)
#*****************************************************************
sub debug_write {
my($mes) = @_;
my @datetime = localtime;
my $datetime = sprintf("%4d-%02d-%02d %02d:%02d:%02d", 1900+$datetime[5], $datetime[4]+1, $datetime[3], $datetime[2], $datetime[1], $datetime[0]);
open(DEBUG, ">>debug.txt");
print(DEBUG "[$datetime] Text $mes\\n");
close(DEBUG);
return;
}
#*****************************************************************
В чём прикол?