s/\x00+//g;
You can also use the "tr///" operator:
tr/\x00//d; # a.k.a. "y///" : y/\x00//d;
To see that in action, consider the following command lines, using perl one-liners (and assuming you have the "xxd" utility for doing a hex dump of stdin -- or some equivalent tool):
perl -e 'print "foo\x00bar" | xxd -g 1
# produces this output (note the null byte):
0000000: 66 6f 6f 00 62 61 72 foo.bar
perl -e 'print "foo\x00bar" | perl -pe 's/\x00+//g' | xxd -g 1
# produces this output (no null byte):
0000000: 66 6f 6f 62 61 72 foobar
If you think you really are doing something like that, and it's not working for you, then you'll have to show a working demonstration of the code that proves it doesn't work.
My guess is you're doing something else wrong elsewhere in your code, unrelated to the regex. (If your program doesn't use strict; then it might be something as simple as a spelling error in a variable name.) |