Hello PerlMonks,

From a device I get binary data, and in this data I need to replace a (binary sub-)string by another one. I thought that I could simply read the data into a string and hoped that s/$cut/$place/g would do the trick. No such luck.

Can it be done using Perl? If so: how? The length of $cut and $place are identical, the location is unknown.

Thanks

update, made a variation on my original testcode to see if I could find the index:

my $datafile=<file with binary data>; my $searchdata=<file with string to be replaced>; my ($FH,$buf, $cut); binmode($FH); open ($FH, $datafile); read($FH, $buf, 10000); chop($buf); close ($FH); open ($FH,$searchdata ); read($FH, $cut, 100); chop($cut); close($FH); my $result = index($buf,$cut); print "position: $result\n";
Update 2: made new testdata, and the code works! Thanks!

In reply to binary search/replace by momo33

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.