... my $binary = pack 'F*', (3.141592) x 8001; # this will dump a 64K+ binary chunk my $string = '...blah...' . $binary . '...blah...'; my ($fiop, $length, $data); if( $string =~ m{}gx ) { ($fiop, $length) = ($1, $2); # extract tag properties as usual $data = substr $string, pos($string), $length # extract data by direct string copy } print "$fiop, $length\n"; print join ',', unpack("F*", $data); (my $notags = $string) =~ s{}{}; print "\n$notags\n"; ...