Soo... ich habe eine Read-Funktion geschrieben, die alle Strings von Spreadsheet-ParseExcel downgraded.
Getestet.
Ergebnis: Kein Effekt.
Dann hab ich die andere Variable gedowngraded, die innerhalb des Regexes steht, dann gings. Diese Variable kommt von einem Tk::Entry. Um zu testen, ob das vom splitten kommt ( Die Var wird an kommas gesplittet und dann einzeln getestet, z.B. Herr und Herrn einzeln gegen die Anredespalte getestet, wenn match, dann männlich)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$assigned_col = (defined($excel_assign{"$eo,$sheet"}[$ba_config{'sex_col'}])) ? ($excel_assign{"$eo,$sheet"}[$ba_config{'sex_col'}]) : ($ba_config{'sex_col'});
$sex_cmp = &read_data($current_sheet, $row, $assigned_col);
$sex_r = $none;
print "\n\n\nsex_cmp:\n";
Dump $sex_cmp;
print "\nba_config{sex_m} VOR split:\n";
Dump $ba_config{'sex_m'};
print "\n";
foreach my $male_cmp (split(/,/,$ba_config{'sex_m'}))
{
print "male_cmp VOR downgrade:\n";
Dump $male_cmp;
print "male_cmp NACH downgrade:\n";
utf8::downgrade($male_cmp);
Dump $male_cmp;
Output:
Quotesex_cmp:
SV = PVNV(0x3cdbbf4) at 0x3b2cae8
REFCNT = 1
FLAGS = (PADBUSY,PADMY,POK,pPOK)
IV = 0
NV = 0
PV = 0x3eabd3c "Herr"\0
CUR = 4
LEN = 8
ba_config{sex_m} VOR split:
SV = PVMG(0x3f27fac) at 0x3f21dbc
REFCNT = 1
FLAGS = (POK,pPOK,UTF8)
IV = 0
NV = 0
PV = 0x3e7fca4 "Herr,Herrn"\0 [UTF8 "Herr,Herrn"]
CUR = 10
LEN = 12
MAGIC = 0x3ed0b2c
MG_VIRTUAL = &PL_vtbl_utf8
MG_TYPE = PERL_MAGIC_utf8(w)
MG_LEN = 10
male_cmp VOR downgrade:
SV = PV(0x3ee7398) at 0x3ef4fe0
REFCNT = 2
FLAGS = (POK,pPOK,UTF8)
PV = 0x3eb0834 "Herr"\0 [UTF8 "Herr"]
CUR = 4
LEN = 8
male_cmp NACH downgrade:
SV = PVMG(0x3f19c74) at 0x3ef4fe0
REFCNT = 2
FLAGS = (SMG,POK,pPOK)
IV = 0
NV = 0
PV = 0x3eb0834 "Herr"\0
CUR = 4
LEN = 8
MAGIC = 0x3e87fb4
MG_VIRTUAL = &PL_vtbl_utf8
MG_TYPE = PERL_MAGIC_utf8(w)
MG_LEN = 4
....
Erklärung:
$ba_cobfig{'sex_m'} wird gesplittet und einzeln $male_cmp zugewiesen.
Ergebnis: split ist nicht verantwortlich für UTF-Flag, allerdings verändern sich einige Werte (REFCNT?), weiss allerdings nicht was das bedeutet. Wichtig scheint nur, dass UTF8 schon vor dem split ein Flag war.
Das heisst für mich: ALLE Rückgabewerte von Vars aus Tk (können) sich in Regexen falsch verhalten.
Das heisst auch, ich muss meinen Code mit utf8::downgrade zumüllen.
Das muss doch anders gehen. Jemand eine Idee wie? Wäre sehr dankbar für Vorschläge, vor allem weil mir die Zeit ausgeht :(
Gruss,
Pete
[Edit]
Erm... mir kam grad die Idee use locale nur dort einzusetzen, wo ichs brauche, innerhalb eines blocks.. also für uc / lc und dateizeugs.. Wie mache ich es nur, dass das nur für einen bestimmten Codepart gilt? Von strict her kenne ich use strict .... no strict ... also on und off schalten des pragmas.. perldoc locale gibt sowas aber nicht her. Jemand eine Idee?\n\n
<!--EDIT|GoodFella|1174785274-->