Readers: 6
2024-09-02T16:30:46 barneyWenn das Speicher so aufbraucht, sehe ich das als Bug an.Das Problem war wohl der Befehl binmode welches unangebracht oft aufgerufen wurde. Anbei ein Beispielsskript. Keine Ahnung ob das als Bug in Perl zu bezeichnen ist.
2024-09-02T16:37:48 GwenDragonWenn das Speicher so aufbraucht, sehe ich das als Bug an.
1 2 3 4 5 6 7 8 9
for my $Count ( 1 .. 100_000 ) { binmode STDOUT, ':encoding(UTF-8)'; print "$Count\n"; } 9955 Prozess beendet mit Exit-Code -1073741571
2024-09-03T05:57:34 barneyJa, und komischerweise macht es einen Unterschied ob man STDOUT und STDERR benutzt. Siehe die Kommentare in meinem Testskript.
1
2
3
4
5
6
7
8
9
10
use v5.24;
use warnings;
use utf8;
for my $Count ( 1 .. 10_000_000 ) {
binmode STDOUT;
binmode STDOUT, ':encoding(UTF-8)';
say "⛄ Count: $Count";
}
QuoteThe binmode function can be called on an opened handle to push additional layers onto the stack, which may also modify the existing layers. binmode called with no layers will remove or unset any existing layers which transform the byte stream, making the handle suitable for binary data.
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/perl use strict; use warnings; use 5.024; for my $Count ( 1 .. 10_000_000 ) { #binmode STDOUT, ':encoding(UTF-8)'; binmode STDOUT, ':raw'; print "$Count\n"; }
1 2 3 4 5 6 7 8 9 10 11
#!/usr/bin/perl use strict; use warnings; use 5.024; for my $Count ( 1 .. 10_000_000 ) { binmode STDOUT, ':encoding(UTF-8)'; #binmode STDOUT, ':raw'; print "$Count\n"; }