1
2
3
4
5
6
7
8
9
10
11
cat > testfile <<-EOF
( START
zeile2
zeile3
) ENDE
zeile5
( NÄCHSTE
zeile7
zeile8
) ENDE
EOF
if (/BEGIN PATTERN/ .. /END PATTERN/) {
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 49 50 51
#!/usr/bin/perl -w my $TestFile = "testfile"; my $found1 = 0; my $found2 = 0; my %found_arr = (); my $i = 0; if( ! open( TFH, $TestFile)) { print STDERR "Test File '$TestFile' kann nicht gelesen werden !\n"; exit 1; } while( $line = <TFH> ) { chomp $line; if( ( $line =~ m/^\s*([\x28])/i ) && ( ! $found1 ) ) { $found_arr[$i]=$line; $i++; $found1 ++; } if( ( $found1 ) && ( ! $found2 ) ) { if( ! $found2 ) { if( ( $line !~ m/^\s*([\x28])/i ) && ( $line !~ /\Q)/ ) ) { $found_arr[$i]=$line; $i++; } else { if( $line =~ /\Q)/ ) { $found2 ++; $found_arr[$i]=$line; $i++; } } } } } close( TFH); for( $i = 0; $i <= $#found_arr; $i++) { print "$found_arr[$i]\n"; } exit 0;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
use 5.020; use strict; use warnings; my $TestFile = "testfile"; open (my $tfh,'<',$TestFile) or die "Test File '$TestFile' kann nicht gelesen werden: '$!' !\n"; my @found_arr = (); # nicht %found_arr - das wäre ein Hash while (my $line = <$tfh>) { chomp $line; push @found_arr, $line if ($line =~ /\(/ .. $line =~ /\)/); } # In Perl kann man eine Schleife über ein Array sehr einfach schreiben: for my $found (@found_arr) { say $found; }
1 2 3 4 5 6 7 8 9 10 11 12 13
use 5.020; use strict; use warnings; my $TestFile = "testfile"; open (my $tfh,'<',$TestFile) or die "Test File '$TestFile' kann nicht gelesen werden: '$!' !\n"; my @found_arr = grep { /\(/ .. /\)/ } <$tfh>; chomp (@found_arr); say for @found_arr;
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
#!/usr/bin/perl -w use 5.020; use strict; use warnings; my $TestFile = "testfile"; open (my $tfh,'<',$TestFile) or die "Test File '$TestFile' kann nicht gelesen werden: '$!' !\n"; my @found_arr = (); # nicht %found_arr - das wäre ein Hash while (my $line = <$tfh>) { chomp $line; # push @found_arr, $line if ($line =~ /\(/ .. $line =~ /\)/); if ( $line =~ /\(/ .. $line =~ /\)/) { push @found_arr, $line; last if ( $line =~ /\)/ ); } } # In Perl kann man eine Schleife über ein Array sehr einfach schreiben: for my $found (@found_arr) { say $found; }
2020-11-15T22:29:35 bora99die 2. Variante mit "grep" ist dann nicht möglich ?