Perl non-printable chars and unwanted formatting

Discussion in 'Programming/Scripts' started by spinoza, Mar 29, 2006.

  1. spinoza

    spinoza New Member

    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.
     
  2. falko

    falko Super Moderator Howtoforge Staff

    Did you try single quotes?

    Code:
    perl -e 'print \'\x90\';'
     
  3. spinoza

    spinoza New Member

    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
     
  4. falko

    falko Super Moderator Howtoforge Staff

    Code:
    test:~# perl -e 'print "\x90";' | wc -c
    1
     
  5. spinoza

    spinoza New Member

    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
     

Share This Page