Da ist ein Fallstrick drin!
2021-03-14T18:12:52
GwenDragonQuoteThe optional $content argument should be a string of bytes.
Aus Deinem Code schneide ich nur einen kleinen Teil raus:
2021-03-14T18:12:52
GwenDragon
my $login = {
USERNAME => 'asdf',
PASSWORD => 'ääää',
};
Das
ä ist einer der Buchstaben, bei denen die "bytes" davon abhängen, ob die Quelldatei als UTF-8-Datei abgespeichert ist. Wenn die Datei als UTF-8 abgespeichert ist, dann belegt ein
ä zwei Bytes (
A4 C3), ansonsten ein Byte (
E4).
Wenn die Datei als UTF-8 abgespeichert wurde, dann wäre ein
use utf8; angebracht, damit Perl das
ä als solches versteht. Andererseits muss man sich dann selber ums Encoding kümmern, wenn der Server UTF-8 erwartet. Das Default-Encoding in Perl ist nämlich ISO-8859-1, und da gibt's eben das
ä als Byte
E4.
Wenn als UTF-8 abgespeichert wurde, aber
kein use utf8; drinsteht, versteht Perl das Passwort als
ä. Und wenn dann bei der Erstellung des Content kein Encoding durchgeführt wird, dann funktioniert es
zufällig - die beiden Fehler heben sich auf. Von solchen Zufällen sollte man sich nicht abhängig machen, die sind nachträglich schwer zu reparieren.