## read the specified number of bytes from buffer, called by the other read_* functions sub read_buffer { my ($self , $user_length) = @_; my $length = 1; $length = $user_length if $user_length; if(($self->index() + $length) > $self->size()) { print "$tag: WARNING: ##### read_buffer(): not enough data left, ignoring request to read $length bytes! #####\n"; return 0; } my $val = substr($self->buffer(), $self->index(), $length); $self->index($self->index() + $length); print "$tag: DEBUG: read_buffer(): read raw data '$val' of length $length, now at $self->{_index} (" . $self->data_left() . " bytes of " . $self->size() . " left)\n"; return $val; } ## skips the given number of bytes sub skip { my ($self, $user_length) = @_; my $default_length; my $length; $default_length = 1; $length = $default_length; $length = $user_length if $user_length; $self->index($self->index() + $length); return $length; }