AW: How to append BOM at the beginning of a binary

"Nagy Tamas (TVI-GmbH)" <[email protected]> Tue, 9 Jun 2015 07:11:15 +0000
Newsgroups gmane.comp.lang.perl.xml
Message-ID <[email protected]>
Hi,

All the 3 gives the error in Windows CMD:

"Can't do inplace edit without backup."

Tamas Nagy

On 6/8/15 10:48 AM, Nagy Tamas (TVI-GmbH) wrote:
> Hi,
> 
> perl -p -i -e 'BEGIN { printf "%c%c%c", 0xEF, 0xBB, 0xBF }' 
> default.xml perl -p -i -e 'BEGIN { print pack "c3", 0xEF, 0xBB, 0xBF 
> }' default.xml
> 
> Both give the same error:
> 
> Can't find string terminator "'" anywhere before EOF at -e line 1.
> 
> Is it because of Windows CMD? How to get it work?

Yeah, that's probably due to the peculiar command line parsing in Windows.  I happen to be on a Mac, but its shell is the same as the shell on Linux.

I don't have a Windows machine to test it on, but I think that it wants double quotes to enclose the script.  Any quotes inside the script either have to be single quotes (if the string doesn't require variable interpolation),

  perl -p -i -e "BEGIN { printf '%c%c%c', 0xEF, 0xBB, 0xBF }" default.xml

or escaped double quotes,

  perl -p -i -e "BEGIN { printf \"%c%c%c\", 0xEF, 0xBB, 0xBF }" default.xml

or use a quoting operator,

  perl -p -i -e "BEGIN { printf qq{%c%c%c}, 0xEF, 0xBB, 0xBF }" default.xml


That would apply to any Perl one-liner you try to run on Windows.
Most Perl one-liner examples that you are likely to find on the web assume a Unix-like shell.

I know all that is a digression from your XML problem, but a solution to that problem might be expressible as a one-liner, also, so it's important to get past this minor obstacle.

Why do you think you need to put a BOM on your XML file?

--
David Thomas
Sugar Land, Texas
_______________________________________________
Perl-XML mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
_______________________________________________
Perl-XML mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs