Leser: 20
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my $file='blabla.hve'; my @data; open(my $fh, '<:encoding(UTF-8)', $file) or die("Can't open $file ($!)\n"); { local $/="\x1E"; while(my $block=<$fh>) { chomp($block); push(@data,[split(/\x1F/,$block)]); } } close($fh); print Dumper(\@data);
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 29
#!/usr/bin/perl use strict; use warnings; my $filename = 'blabla.hve'; my @data; my $line; my $fh; open( $fh, '<:encoding(UTF-8)', $filename ) or die "Can't open $filename (Error $!)\n"; { local $/ = "\x1E"; while ( my $line = <$fh> ) { chomp $line; push @data, [ ( split /\x1F/, $line ) ]; } } close($fh) or die "Can't close $filename (Error $!)\n"; $filename .= '.tsv'; # Konvertierte Datei Tabssepariert open( $fh, '>:encoding(UTF-8)', $filename ) or die "Can't open $filename (Error $!)\n"; while (@data) { $line = shift @data; print $fh join( "\t", @$line ), "\n"; } close($fh) or die "Can't close $filename (Error $!)\n";
2013-02-04T22:51:11 Student87Die Datei blabla.hve.tsv? Benenne die einfach in .txt um, dann sollte sie hochladbar sein.Die Datei selbst kann ich nicht uploaden, er sagt "Attachment error: Unsupported mime type".
2013-02-04T22:51:11 Student87Ich habe kein Problem, mit einer Vokabular-Testdatei (ob die aber stimmt, weiß ich nicht ohne ein Original zu haben) eine Tab-Separierte Datei zu erzeugen, die ich in Excel importieren kann.Hm, irgendwie scheint keine der beiden Lösungen zu funktionieren. Im Anhang die Fotos der beiden Lösungen.
QuoteDie Datei selbst kann ich nicht uploaden, er sagt "Attachment error: Unsupported mime type".
QuoteDu nimmst an, dass ich nur Gwen bin? GwenDragon, plz, Student87. ;) So viel Zeit muss sein.Gwen,
QuoteDu meinst das hier:was machen in deinem Code in Linie 17 die eckigen Klammern und was bewirken die runden?
push @data, [ ( split /\x1F/, $line ) ];
( split /\x1F/, $line )
[ ( split /\x1F/, $line ) ]
push @data, [ ( split /\x1F/, $line ) ];
2013-02-07T08:40:04 Student87Ja, stimmt. Innerhalb des Arrays ist es ja Listenkontext. Muss nicht sein.1)
Ich mein, split kann doch gar nichts anderes, als nen Listenkontext zurückgeben (Nach nem split gibts ja mehrere Teil-Elemente) ? D.h., wieso können wir nicht einfach sagen [ split /\x1F/, $line ] ?
Quotefor und foreach expandiert das als Liste. Bei while expandiert das als Anzahl der Einträge im Array2)
Und wieso loopst du mit while durch einen Array? Ich loope immer mit foreach - geht das in diesem Fall, weil der Array aus Referenzen besteht? Und wenn ja, warum ? Also inwiefern macht ein Array, der aus Referenzen besteht, einen Unterschied bei der "while-loopbarkeit" ?
Quote3)
Wie genau ist die Logik von @$line in Zeile 27 ?
print $fh join( "\t", @$line ), "\n";
@$line