Thread Byte raw format in String umwandeln (Glib::IO::File->get_contents) (18 answers)
Opened by Max_Perlbeginner at 2016-05-31 10:53

Max_Perlbeginner
 2016-05-31 13:55
#184856 #184856
User since
2016-04-04
107 Artikel
BenutzerIn
[default_avatar]
Liebe GwenDragon,
lieber Raubtier,

Herzlichen Dank für Eure Antworten. Das geht ja doch recht einfach... Gibt es denn eine zu bevorzugende Lösung? Ich würde im Moment pack nehmen, weil da auch die umgekehrte Richtung problemlos klappt. Mit ord als Pendant zu chr wäre das wohl etwas umständlicher...

@Gast janus
In der Tat geht es letztlich darum, ein Gtk3 FileChooser widget zu bauen und dafür die Libraries von Gio::GFile optimal zu nutzen. Es gibt ein noch unfertiges Modul von Gio hier. Da ich gerade an einem Tutorial für Gtk3 schreibe und mir dabei aufgefallen ist, dass das Gio Modul gerade an dieser Stelle noch eine Anpassung bräuchte, würde ich gerne (auch wenn es etwas vermessen klingt) in diesem Modul einen Override schreiben und als Verbesserungsvorschlag auf der perl-gtk3 Liste diskutieren...

Das Problem stellt sich wie angedeutet auch im umgekehrten Fall mit der Funktion Glib::IO::File::replace_readwrite. Das Modul Glib::Object::Introspection erwartet hier ein array ref, das auch im raw byte Format vorlag.

Meine Lösung wäre nun einfach den umgekehrten Befehl zu verwenden:
Code: (dl )
my @content = unpack "C*", $current_contents;

wobei $current_content eben den String "Hallo Welt" oder etwas anderes enthielte.

Wäre das vertretbar? Oder gibt es dafür eine bessere Lösung? Es klappt bei mir so eigtl. ganz gut (insbes. auch die Umlaute). Ich frage mich nur, wie die Funktion pack/unpack weiß, welche Kodierung (utf8 oder ascii) es nehmen muss? Je nachdem würden den Zeichen ja unterschiedliche Zahlen zugeordnet, oder?

View full thread Byte raw format in String umwandeln (Glib::IO::File->get_contents)