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
use strict; use warnings; use 5.010; my (@x, @y, @z, @W); # Arrays für Daten my $file_name = 'test.dat'; # Dateiname der Datendatei # Datei öffnen open my $fh, '<', $filename or die "Datei $file_name: $!"; # erste Zeile wegwerfen, da Header my $line = <$fh>; # weitere Zeilen einlesen while ( $line = <$fh> ) { chomp $line; # unwichtiges Zeilenende entfernen my ($x, $y, $z, $W) = split /\t/,$line; # In einzelne Daten aufsplitten # einzelne Daten in Arrays speichern push @x,$x//''; push @y,$y//''; push @z,$z//''; push @W,$W//''; } # Datei schließen close $fh;
my $line = <$fh>;
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
use feature qw(say); my $fh = *DATA; my (@x, @y, @z, @W); my $line = <$fh>; while ( $line = <$fh> ) { chomp $line; my ($x, $y, $z, $W) = split /\t/,$line; # einzelne Daten in Arrays speichern push @x,$x//''; push @y,$y//''; push @z,$z//''; push @W,$W//''; } say $_ for (@x); say $_ for (@y); say $_ for (@z); say $_ for (@W); __DATA__ x y z W 1 22 19 ABC 9 1 22 XYZ
Guest JörnIch würde das /\t/ durch /\s+/ im Split-Befehl ersetzen, da das sowohl bei Leerzeichen als auch bei Tabulatoren funktioniert.
QuoteWas macht denn das //'' im push-Befehl?
2015-04-20T13:20:15 KurtosisIch habe jetzt mit
@x = splice(@x,1);
die Bezeichnung aus der ersten Zeile entfernen können.
shift(@x);