http://www.perlmonks.org?node_id=1022682


in reply to Re^2: serial raw write problem with multidigit decimal and strings
in thread serial raw write problem with multidigit decimal and strings

Strange. "\x96" and chr 150 return the same for me:
diff <(perl -e 'print "\x96"' | xxd) <(perl -e 'print chr 150' | xxd)

No output.

لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

Replies are listed 'Best First'.
Re^4: serial raw write problem with multidigit decimal and strings
by ultibuzz (Monk) on Mar 10, 2013 at 20:00 UTC

    indeed on the normal console it is the same,but transmitted to the device it is different.
    with chr 150 the û get transmitted,
    with x96 ,HEX96 reaches the device,which excepts a decimal, then it convert it to decimal which is 150,and does not do a ascii table map.
    This works for alot of functions, but some functions except only decimal or string / or do not convert them as usual.

    kind regards
    alex

      HEX96 reaches the device
      What are you talking about? It has nothing to do with print. They are the same even if not printed:
      perl -e 'print "same" if chr 150 eq "\x96"'
      لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ

        they are the same for perl, but they are not the same for the device on the serial port.
        the device treats them differently.

        the issue is not really perl, but what ways there are to send the same data in different ways, which might get interpreted differently.

        a more confusing example:

        print "\x36" is 6 in perl, is 54 on device if decimal is expected print "6" is 6 in perl, is 6 on device

        the issue is primary how the device handels the data, which is different on most functions as well.
        kind regards - alex