Thread testcase schlägt fehl (36 answers)
Opened by GwenDragon at 2017-07-19 21:24

GwenDragon
 2017-07-20 14:50
#186976 #186976
User since
2005-01-17
14748 Artikel
Admin1
[Homepage]
user image
:doh: der <FH> ist ja ein Operator für Textstreams. OK.

Warum kann man dann bloß sowas machen, wenn es unsinnig ist binmode und $/ zu nutzen:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
use 5.020;
use Fcntl;
use strict;
use warnings;

my $file_name = 'C:\Windows\notepad.exe';

my $size = -s $file_name;
my ($data_open, $data_sysopen);

{
open my $fh1, '<', $file_name;
binmode $fh1;
local $/;
$data_open = <$fh1>;
close $fh1;
}

{
sysopen my $fh2, $file_name, O_RDONLY;
binmode $fh2;
read ($fh2, $data_sysopen, $size);
}

say "Groesse: ", $size;
say "Laenge gleich: ", length($data_open), ' | ' , length($data_sysopen);
say "Daten ", $data_open ne $data_sysopen ? 'ungleich' : 'gleich';
T:\>perl a.pl
Groesse: 246784
Laenge gleich: 246784 | 246784
Daten gleich


Ich würde gern verstehen warum das klappt, obwohl es nicht sinnvoll ist. Oder macht perl da im Hintergrund weider irgendwas magisches, dass es klappt? Ich kenne Perls Interna ja nicht so genau.
Last edited: 2017-07-20 15:43:33 +0200 (CEST)

View full thread testcase schlägt fehl