Leser: 5
![]() |
|< 1 2 3 4 5 >| | ![]() |
49 Einträge, 5 Seiten |
1 2 3 4 5 6
for my $zeile1 (@zeilen) { if ( $zeile1->[1] =~ m/20/) { #print $zeile1->[0]; @zweierlevel=splice(@zeilen,$_,1); }; };
leo11+2008-08-24 09:04:28--
leo11+2008-08-24 09:04:28--Nun möchte ich alle Zeilen bei denen in der dritten Spalte eine 20 steht aus @zeilen herausnehmen und in ein neues array speichern.
leo11+2008-08-24 09:04:28--Würde mir jemand einfach mal zeigen wie man das macht?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @rows = map {chomp; $_} (<DATA>);
print Dumper \@rows;
my @filtered = grep { $_->[2] == 20 } map { [split /;/, $_] } @rows;
print Dumper \@filtered;
__DATA__
Zeile1;;100;;
Zeile2;;60;;
Zeile3;;20;;
Zeile4;;20;;
Zeile5;;40;;
leo11+2008-08-24 09:04:28--Als nächstes möchte ich alle Zeilen bis zur 20 aus @zeilen nehmen und in ein extra Array zu speichern. Wie kann man das machen?
1
2
3
4
5
6
my @first_ones;
for my $row (@rows) {
last if [split /;/, $row]->[2] == 20;
push @first_ones, $row;
}
print Dumper \@first_ones;
leo11+2008-08-24 09:04:28--
1 2
@auszug = grep { $_->[1] == 20} @zeilen; @verkuerzt = grep { $_->[1] != 20} @zeilen;
leo11+2008-08-24 14:07:40--Nun möchte ich als Ergebnis ein Array a, das alle Zeilen enthält, bis in der dritten Spalte 20 steht. Dann ein Array b, das die 20er Zeilen enthält, und ein Array c, dass die restlichen Zeilen bis zu Dateiende enthält.
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 30 31 32 33 34 35 36 37 38 39
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @rows = map {chomp; $_} (<DATA>); print Dumper in_three_chunks(\@rows, 20); sub in_three_chunks { my $rows = shift; my $criteria = shift; return unless ref $rows or not $criteria =~ /^\d+$/; my %parted = ( before => [], matching => [], after => [] ); for my $row (@$rows) { my $cur = [split /;/, $row]; push @{$parted{'matching'}}, $cur and next if $cur->[2] == $criteria; unless (@{$parted{'matching'}}) { push @{$parted{'before'}}, $cur; } else { push @{$parted{'after'}}, $cur; } } return \%parted; } __DATA__ Zeile1;;100;; Zeile2;;60;; Zeile3;;20;; Zeile4;;20;; Zeile5;;40;;
leo11+2008-08-24 14:07:40--2.)Ich habe gelernt das von oben angefangen Zeile für Zeile eingelesen wird. Nun möchte ich als Ergebnis ein Array a, das alle Zeilen enthält, bis in der dritten Spalte 20 steht. Dann ein Array b, das die 20er Zeilen enthält, und ein Array c, dass die restlichen Zeilen bis zu Dateiende enthält.
![]() |
|< 1 2 3 4 5 >| | ![]() |
49 Einträge, 5 Seiten |