Leser: 21
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
#!/usr/bin/perl use strict; use warnings; my @array = ( 'Dut No', 'asdf', 'asdf', 'asdf', 'Dut No', 'yxcv', 'yxcv', 'yxcv', 'yxcv', 'Dut No', 'fhgj', 'fhgj', 'fhgj'); my $count = 0; my $in_dut_no = undef; foreach my $item (@array){ if ($item eq "Dut No"){ $in_dut_no = 1; $count++; print "\nDut No ($count)\n"; } elsif ($in_dut_no){ print "$item\n"; } }
Guest GAST[...] ich habe ein große Datei, in dieser stehen Infos, dich ich gerne aufteilen will!
Als 1. schreibe ich diese Datei in ein Array, weil ich diese hier schon aufteile, [...]
Quote[...] Und ich will genau alles zwischen jedem "Dut No" incl. alles was bis zum nächsten "Dut No" steht in jedem Schritt (in einer Schleife) ausgegeben haben, [...]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
use strict; use warnings; use Data::Dumper; my ($i, @d) = (-1); while (<>) { if (/^Dut No/) { $d[++$i] = ''; } else { $d[$i] .= $_; } } print Dumper \@d;
1 2 3 4 5 6 7 8 9 10 11 12 13 14
use strict; use warnings; use Data::Dumper; my @d = do { local $/ = "Dut No$/"; my @d = <>; chomp @d; @d[1..$#d]; }; print Dumper \@d;
Guest GAST[...] das Problem ist, das mein Suchstring nur jeden 2. Dut No ausgibt, d.h. dieser überschreibt bei jedem Finden das Dut No!
Wie kann ich das verhindern?
So sieht meine Suche aus: