Thread Match Pattern über mehrere Zeilen
(3 answers)
Opened by bora99 at 2020-11-13 23:11
Ja, der Flip-Flop ist etwas gewöhnungsbedürftig, aber genau für solche Fälle gemacht:
Code (perl): (dl
)
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; } Und immer dann, wenn man in einer Schleife von einem Array in ein anderes schaufelt, kommen die Perl-Funktionen map und grep sehr gelegen. Hier ist es grep: Code (perl): (dl
)
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; Bei say habe ich ausgenützt, dass Perl $_ als Standard-Variable verwendet. Bei solchen sehr kurzen Schleifen halte ich das für sinnvoll. View full thread Match Pattern über mehrere Zeilen |