open my $file, '<:crlf', 'datei'
2013-05-30T18:28:20 RaubtierDas funktioniert nur dann nicht, wenn du die Datei auf Windows erstellt hast, dann aber unter einem anderen OS einliest, das andere Zeilenumbrüche hat.
2013-05-31T04:40:21 bianca2013-05-30T18:28:20 RaubtierDas funktioniert nur dann nicht, wenn du die Datei auf Windows erstellt hast, dann aber unter einem anderen OS einliest, das andere Zeilenumbrüche hat.
Das kann ich jetzt aber nicht ganz nachvollziehen. Bei mir hat eine unter Windows geschriebene Datei auch beim Einlesen unter Linux noch die selben Zeilenumbrüche. Nämlich die, die vorher geschrieben wurden.
Wie meinst du das genau?
2013-05-31T06:20:53 RaubtierDieselbe Datei (binär identisch, nicht logisch identisch) unter Linux gibt das aber nicht aus.
2013-05-31T06:20:53 RaubtierAnsonsten: das Thema gabs schon öfter mal...
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
28
$ file dos.txt
dos.txt: ASCII text, with CRLF line terminators
$ cat dos.txt
Dies ist ein
DOS-formatierter
Text mit "\r\n"
als Umbruch.
$ cat linebreak.pl
#! /usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
$Data::Dumper::Useqq = 1;
my $file = shift or die "no file given.\n";
open my $fh, '<', $file or die "$file: $!\n";
my $line = <$fh>;
print "passt: ".Dumper($1) if $line =~ m{^(.*)$};
$ perl linebreak.pl dos.txt
passt: $VAR1 = "Dies ist ein\r";
$
1 2 3 4 5 6 7 8 9
my $lend="\x0D\x0A"; for(PerlIO::get_layers(*STDOUT)) { if($_ eq 'crlf') { $lend="\x0A"; last; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
#! /usr/bin/env perl use strict; use warnings; use Data::Dumper; $Data::Dumper::Useqq = 1; my $filename = shift || die "no file given.\n"; open my $fh, '<', $filename or die "$!\n"; my $line = <$fh>; if ( $line =~ m{^([^\r\n]*)} ) { print Data::Dumper->Dump( [ $line, $1 ], [ qw( *line *1 ) ] ); } close $fh;