in reply to Re^6: extracting a substring from a string - multiple variables
in thread extracting a substring from a string - multiple variables

Whoa... let's take a step back.

I think you'd be better off if your client(s) used ftp to transfer the binary stuff as data files (with distinct file names), and then just put references to the file names in the XML stream that gets posted. This way, there's nothing in the XML stream except valid XML, and doing stuff with the binary data will be easier, putting less load on the overall process.

But if there's no chance of doing it sensibly like that, then you just need to use a while loop for handling more than one <file/>...</file> element in the data, and hope for the best:

while ( $indata =~ s{<file fiop="([^"]+)" length="(\d+)"/>(.*?)</file> +}{}s ) { ( $fiop, $fileLength, $fileData ) = ( $1, $2, $3 ); # do something with $fileData, possibly after checking that # $fileLength == length( $fileData ), if that matters to you } if ( $indata =~ m{<file fiop=|</file>} ) { # there's something wrong with the posted data, so it's still # not suitable for XML parsing... }