PDA

View Full Version : Perl non-printable chars and unwanted formatting


spinoza
30th March 2006, 00:59
I have a problem using perl to print certain non-visable characters. Simply put, the code I'm working from appear to assume that the following statement will output one byte.

perl -e 'print "\x90";'

However, filtering with wc -c or redirecting to file shows that the statement is actually producing two bytes. A hex viewer shows that the 2nd byte is the correct 0x90, but it is proceeded by a 0xC2 byte. This also occurs with other non-printable characters, but not with printable characters.

I'm quite new to both linux and perl so I'm not sure whether I'm doing something wrong here or whether I've just misunderstood the purpose of the original program. All the web searches and perl reference texts appear to show that the statement is correct and only one byte should be output. Is this extra byte some kind of formatting byte ?

I'm using Redhat 9 and using perl in a bash shell running in a terminal window.

I would appreciate it if anyone could help with this.

Thanks.

falko
30th March 2006, 16:56
Did you try single quotes?

perl -e 'print \'\x90\';'

spinoza
30th March 2006, 17:37
Falko,

The single quotes don't appear to work. The shell just displays the > prompt

I'd be interested to know whether the following statement outputs 1 or 2 on your system (It produces 2 on mine) ?

perl -e 'print "\x90";' | wc -c

Regards,

S

falko
31st March 2006, 12:49
test:~# perl -e 'print "\x90";' | wc -c
1

spinoza
1st April 2006, 21:30
Falko,

I have solved the problem now. My system was using Unicode, which resulted in different codes for non printable characters. By setting the LANG export to en_GB everything works perfectly.

Thanks for your help.

Regards,

S