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

David Thomas <[email protected]> Mon, 08 Jun 2015 11:48:13 -0500
Newsgroups gmane.comp.lang.perl.xml
Message-ID <[email protected]>
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