Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12411[/thread]

Tie::File und utf-8

Leser: 1


<< >> 10 Einträge, 1 Seite
RalphFFM
 2008-08-27 14:26
#114030 #114030
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo, wie sage ich es Perl, daß das was Tie::File da einliest UTF-8 kodiert ist?
Problem ist, das ein anschließendes split /\xa1/ (ein Trennzeichen) jedes Elements schiefgeht.
Code (perl): (dl )
1
2
3
4
use Tie::File;
tie my @adressen, 'Tie::File', 'adressen.db', recsep => "---\n"
        or die "tie adressen.db nicht moeglich: $!";
...

Im voraus Danke für jede Info.
renee
 2008-08-27 14:38
#114031 #114031
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
use IO::File;
use Tie::File;

my $fh = IO::File->new( 'adressen.db',"+>:encoding(UTF-8)" );
tie my @adressen, 'Tie::File', $fh, recsep => "---\n" or ...;


(ungetestet)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
RalphFFM
 2008-08-27 15:53
#114033 #114033
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Irgendwie wird dann immer der Dateiinhalt leergeräumt.

Aber ich glaube jetzt nach sehr vielem Lesen eine Lösung gefunden zu haben:
Code (perl): (dl )
1
2
3
sysopen HANDLE, "./adressen.db", O_RDWR|O_CREAT or die;
binmode(HANDLE, ":encoding(utf8)");
tie my @adressen, 'Tie::File', \*HANDLE, recsep => "---\n" or die;

Irgendwie eine etwas durchgeknallte Lösung finde ich, scheint aber zu funktionieren. Werde noch ausgiebiger testen.
Linuxer
 2008-08-28 15:41
#114047 #114047
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
Der Modus "+>" öffnet die Datei zum Lesen/Schreiben, wobei sie aber initial neu angelegt/überschrieben wird.

Mögllicherweise ist "+<" eher erwünscht; oder auch "+>>".
Oder wirklich Deine Lösung mit O_RDWR|O_CREAT.

Da der Einsatzzweck mir nicht wirklich bekannt ist, ist schwer zu beurteilen, was hier zu nutzen wäre.

perldoc perlopentut - Mixing Read and Write
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
RalphFFM
 2008-08-29 10:28
#114059 #114059
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Achso, kein Wunder dann. Renee sensibilisierte mich auf die Möglichkeit ein Filehandle anstelle eines Dateinamens zu übergeben. Das hat sich als zielführend herausgestellt.

Nach perldoc -f open wäre wohl '+<' geeignet. Diese Art der Modi-Bezeichnungen sind finde ich schlecht zu merken. Die open-Manpage ist hierfür unübersichtlich. Gibt es eine Manpage in der diese Modi übersichtlicher aufgezählt sind?
nepos
 2008-08-29 10:38
#114060 #114060
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
perlopentut vielleicht?
RalphFFM
 2008-08-29 10:53
#114061 #114061
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ja, sieht so aus. Im Abschnitt "Mixing Reads and Writes" isses erklärt. Danke.
Linuxer
 2008-08-29 11:53
#114062 #114062
User since
2006-01-27
3890 Artikel
HausmeisterIn

user image
*wunder* hab ich was anderes verlinkt?
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
nepos
 2008-08-29 12:02
#114063 #114063
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ne, ich habs nur übersehen :P
RalphFFM
 2008-08-29 12:24
#114064 #114064
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Dito. Seltsam.
<< >> 10 Einträge, 1 Seite



View all threads created 2008-08-27 14:26.