Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: How to concatenate N binary buffers?

by choroba (Cardinal)
on Nov 13, 2012 at 17:04 UTC ( [id://1003671]=note: print w/replies, xml ) Need Help??


in reply to How to concatenate N binary buffers?

. is the concatenation operator. Rather than writing 2 * $bufsize, remember how much you have read:
my $size1 = sysread $in1, my $buf1, $bufsize;
لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

Replies are listed 'Best First'.
Re^2: How to concatenate N binary buffers?
by mantager (Sexton) on Nov 14, 2012 at 06:56 UTC

    Thanks,
    I was wondering if "." could change in some way the content of the two buffers. Since it's string concatenation operator, I was worried that some sort of "stringification" of the two buffers could change them some way (this is why I asked if there's a way to concat two binary buffers). I am still not sure about this.

    Regarding the size of the read data: I am actually trying to put back together some stripes from a dead raid array, so if I am not able to read exactly $bufsize bytes I'd better die away asap :)

    Thanks a lot!

      I was wondering if "." could change in some way the content of the two buffers. Since it's string concatenation operator, I was worried that some sort of "stringification" of the two buffers could change them some way (this is why I asked if there's a way to concat two binary buffers). I am still not sure about this.

      Perl's strings are "8-bit-clean". You can store binary data in them, and you can use all string operators on them, even if you consider your data binary. Stringification does not happen here, because for Perl, the data is already a string.

      Regarding the size of the read data: I am actually trying to put back together some stripes from a dead raid array, so if I am not able to read exactly $bufsize bytes I'd better die away asap :)

      Consider using dd conv=noerror, dd_rescue or ddrescue instead of Perl. If you care about your data, don't touch it and pay experts to rescue the data.

      Alexander

      --
      Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)
        Consider using dd conv=noerror, dd_rescue or ddrescue instead of Perl.

        Already done. I'm reading from the dd'ed data, in fact.

        If you care about your data, don't touch it and pay experts to rescue the data.

        Buddy, now you're underestimating me ;)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1003671]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2024-04-24 20:10 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found