Tk::Entry utf8 und perl2exe

23/05/2008 - 14:47 von Peter Arnhold | Report spam
Hallo.

Die Voraussetzungen für das nachfolgend beschriebene:
- Win32,
- perl2exe V9.100C,
- ActiveState Perl v5.10.0,
- Tk Version 804.028.

Tk::Entry setzt dem angegebenen Scalar ($mw->Entry(-text => \$string)->pack();)
das utf8-Flag. Das führt bei anschließenden Operationen auf den String zum
Laden von utf8.pm.

Wenn das Ganze als Script làuft, gibt es keine Probleme, so lange man nicht
utf8.pm versteckt ;-) Das ist wiederum eine Möglichkeit, die Fehlermeldung ohne
perl2exe zu reproduzieren.

Der entstehenden exe von perl2exe fehlt utf8.pm. Das kann man zwar mit in die
exe packen. Dann kommen aber Fehlermeldungen aus utf8_heavy.pl. Beispiel:

Use of uninitialized value $list in pattern match (m//) at
PERL2EXE_STORAGE/utf8_heavy.pl line 227.

Kennt jemand das Problem oder besser eine Lösung *mit* der aktuellen Tk und
perl2exe Version? Kann man Tk überreden, das Setzen des Flags zu lassen? Die
Tk-Version, die ich bisher benutzt habe (800.024 aus Actice-State Perl 5.83),
tat es jedenfalls nicht.

Minimalbeispiel:

use Tk;
my $string = 'foo';
MainWindow->new()->Entry(-text => \$string)->pack();

$string = uc $string;

MainLoop;

Gruß,
Peter
 

Lesen sie die antworten

#1 Moritz Lenz
24/05/2008 - 18:32 | Warnen spam
Hallo,

Peter Arnhold wrote:
Die Voraussetzungen für das nachfolgend beschriebene:
- Win32,
- perl2exe V9.100C,
- ActiveState Perl v5.10.0,
- Tk Version 804.028.

Tk::Entry setzt dem angegebenen Scalar ($mw->Entry(-text => \$string)->pack();)
das utf8-Flag. Das führt bei anschließenden Operationen auf den String zum
Laden von utf8.pm.

Wenn das Ganze als Script làuft, gibt es keine Probleme, so lange man nicht
utf8.pm versteckt ;-)



Wieso sollte man das wollen? Und vor allem: Wenn du mit Text arbeitest,
wieso schickst du ihn dann nicht schon vorher durch Encode::decode oder
einen dekodierenden IO-Layer?

Der entstehenden exe von perl2exe fehlt utf8.pm. Das kann man zwar mit in die
exe packen. Dann kommen aber Fehlermeldungen aus utf8_heavy.pl. Beispiel:

Use of uninitialized value $list in pattern match (m//) at
PERL2EXE_STORAGE/utf8_heavy.pl line 227.



Wenn das bei allen mit perl2exe erstellen Programmen auftritt, die
utf8.pm enthalten, solltest du den perl2exe-Machern einen Bugreport
schicken.

Grüße,
Moritz

Moritz Lenz
http://perl-6.de/ http://moritz.faui2k3.org/

Ähnliche fragen