1. When change global variable '$,' and/or '$\',
debugger can not parse passed variables.
# sample code
#!/usr/bin/perl
$,="\t"; # Display normally
$\="\n"; # Display only '$^p'
# after that , no variable displayed
print "Hello world";
exit;
--
2. Double byte character can not handled correctly.
It is same as #1330854.
In non-English OS(Japanese,Korean,Chinese,etc...),
Perl debugger( as ActivePerl) passed double byte
characters as localized error messages.
eg;
a) Load script by debugger,
The passed errors message is WSAENOTSOCK,
$^ES00000038'ソケット以外のものに対して操作を実行しようとしま
した。'
1 2 3
4 5 5
1234567890123456789012345678901234567890123456789012345
6 -- count by byte
1
2 2
12 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
3 4 5 6 7 8 9 -- count by character
b) Step in to scripts,debugger passed
ERROR_ENVVAR_NOT_FOUND into $^E.
NS00000003$^E
S00000032'入力された環境オプションが見つかりませんでした。'
--
Environment:
Windows XP SP2(JPN) ;
Eclipse 3.2 + EPIC 0.4.10
ActivePerl 5.8.8 Build 819
2nd half's example text (ruled)
Logged In: YES
user_id=1600524
At last time, I misunderstood that variable strings counted
in decimal.
The value
S00000032
'入力された環境オプションが見つかりませんでした。'
is right as 50 bytes strings.
And, in character count is 26.
--
Looking at readString in VarParser , using
constructor 'String(mChars,mPos,length)'.
The constructor expecting character count in length,
but passed length was byte count.
And then , overrun mPos.
-- in String readString(boolean fPrintError)
temp = new String(mChars,mPos,length);
bytelen = temp.getBytes().length;
--
if length equal bytelen, without change.
If length < bytelen , it contain double-byte character(s) ,
should be truncate temp.
Logged In: YES
user_id=86907
Fixed in 0.4.18/0.5.18.