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 40 41
open (IN_elements , "<elemente.txt"); while(<IN_elements>){ chomp; $element = substr($_,0,4); $elemente[$q] = $element; $q += 1; } my (@zeilen) = (); my $zeile; my $n = 0; open (IN , "<hq_regio_neu.txt"); while(<IN>){ chomp; $zeile = $_; $zeilen[$n] = $zeile; $n +=1 ; } my @lines = <hq_regio_neu.dat> ; foreach $element(@elemente){ open (Out,">>$element.txt"); foreach $zeile(@zeilen){ if($zeile =~/$element /){ if(length($zeile)<=(length($element)+2)){ $sub = substr($zeile,length($element)+1,1); print Out $zeile,"\n",$sub; }}}
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
#!/usr/bin/perl use strict; use warnings; my $num = 0; while ( my $line = <DATA> ) { if ( $num == 0 && $line =~ m/LESE (\d+)/ ) { $num = $1; } elsif ( $num > 0 ) { print $line; $num--; } } __DATA__ LESE 3 a1 a2 a3 LESE 2 b1 b2 LESE 2 c1 c2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
open (IN , "<hq_regio_neu.txt"); my $num = 0; while ( my $line = <IN> ) { if(length($line)<=(length($element)+2)){ if ( $num == 0 && $line =~ m/$element (\d+)/ ) { $num = $1; } elsif ( $num > 0 ) { print Out $line; $num--; } } }
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 40 41 42 43 44 45 46 47 48
#! /usr/bin/perl use strict; # grosse Hilfe; immer einschalten use warnings; # wenigstens beim Entwickeln einschalten; auch grosse Hilfe my $num = 0; # Zaehler, wie viele Zeilen gelesen werden sollen # zeilenweise vom Handle DATA lesen; alternativ eben ein Handle einer selbst geoeffneten Datei while ( my $line = <DATA> ) { # wenn keine Zeile mehr zu lesen ist und die aktuelle Zeile # einen String enthaelt, der lesenswerte Zeilen definiert, dann # uebernehme die Anzahl der zu lesenden Zeilen nach $num # !!! wenn $num noch nicht 0 ist, dann wird eine Zeile mit einem # neuen "LESE xy" ausgegeben und nicht ausgewertet!!! if ( $num == 0 && $line =~ m/LESE (\d+)/ ) { $num = $1; } # wenn noch Zeilen zu lesen sind elsif ( $num > 0 ) { # gebe die aktuelle Zeile aus print $line; # und reduziere den Zaehler um eins $num--; } # weiter mit naechster Zeile } # DATA Sektion kann entfallen, wenn eigene Datendateien verwenden werden # und nicht vom Handle DATA gelesen wird __DATA__ LESE 3 a1 a2 a3 LESE 2 b1 b2 LESE 2 c1 c2 LESE 4 d1 d2 d3 LESE 3 # ich werde ausgegeben d4 d5 d6
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 40 41
use strict; use warnings; my (@elemente) = (); # Erzeugen einer leeren Liste my $element; my $y=0; open (IN_elements , "<elemente.txt"); # öffnet Txt - Datei in denen alle Elemente stehen while(<IN_elements>){ # Schleife weist jedem Element einen Listenplatz zu chomp; $element = substr($_,0,4); $elemente[$q] = $element; $q += 1; } foreach $element(@elemente){ open (Out,">>$element.txt"); open (IN , "<hq_regio_neu.txt"); my $num = 0; while ( my $line = <IN> ) { if ( $num == 0 && $line =~ m/$element (\d+)/ ) { $num = $1;} elsif ( $num > 0 ) { print Out $line; $num--; } } }
<Integer Zahl><Leerzeichen><Integer Zahl>
1 2 3 4 5 6 7 8 9 10 11 12 13
for my $element ( @elements ) { my $file = "$element.txt"; # nur bearbeiten wenn vorhanden if(exists($regio{$element})){ # ueberschreibendes Schreiben open my $outfh, '>', $file or die "open(w, $file) failed: $!\n"; # anhaengendes Schreiben #open my $outfh, '>>', $file or die "open(w+, $file) failed: $!\n"; print $outfh join( "\n", @{ $regio{$element} } ); close $outfh or die "close(w+, $file) failed: $!\n"; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
# Schleifenkörper über Handle my $span = undef; while(<DATA>){ my $x = [split]; if($x->[0] eq 'vier'){ # Ausdruck gefunden!, Anzahl der folgenden Zeilen in [1] $span = $. + $x->[1]; } if(defined $span && $. <= $span){ print $_; } } __END__ eins 1 zwei 2 drei 3 vier 4 fünf 5 sex 6 sieben 7 acht 8 neun 9 zehn 10