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 $bool = 0; while( my $line = <DATA> ){ if( $line =~ /^\/begin blubber/ ){ $bool = 1; } print $line unless $bool; if( $line =~ /^\/end blubber/ ){ $bool = 0; } } __DATA__ Text am Anfang /begin blubber skdjflkdsjf sdlkfjdsk lksjflksdj aajjllja /end blubber Text am Ende
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
#!/usr/bin/perl use strict; use warnings; while( my $line = <DATA> ){ print $line unless $line =~ /^\/begin blubber/ .. $line =~ /^\/end blubber/; } __DATA__ Text am Anfang /begin blubber skdjflkdsjf sdlkfjdsk lksjflksdj aajjllja /end blubber Text am Ende
QuoteSiehe msg #151974Wenn ich es über den $text =~s/// Befehl machen will, wie sieht der Befehl aus? Interessehalber?
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
#!/usr/bin/perl while (<DATA>) { # Daten einlesen if (/\/begin / .. /\/end /) { next; # Daten überspringen } print; # sonst Daten ausgeben } __DATA__ /begin blubber skdjflkdsjf sdlkfjdsk lksjflksdj aajjllja /end blubber Zorg Zack Murks Foo Bar Wall Tim Towdy /begin meaaahhh sdlkfjdsk lksjflksdj aajjllja /end meaaahhh Muh Wuff Miau
Guest KruemelWie sieht denn dann die Zeile aus, wenn in $text das File als in einem String eingelesen wurde.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#!/usr/bin/perl use strict; use warnings; my $text = do { local $/; <DATA> }; $text =~ s/\/begin blubber.*\/end blubber\n//s; print $text; __DATA__ Text am Anfang /begin blubber skdjflkdsjf sdlkfjdsk lksjflksdj aajjllja /end blubber Text am Ende
2011-08-31T09:31:04 payxCode (perl): (dl )$text =~ s/\/begin blubber.*\/end blubber\n//s;
$text =~ s/\/begin blubber.*?\/end blubber\b//sg;
Quote, wollte ich das Beispiel einfach halten und habe nicht versucht, es so robust zu machen, dass es für eine produktive Anwendung übernommen werden könnte. (Die Problemstellung hört sich nach einer Übungsaufgabe an.). Aber wenn mehrere blubber-Blöcke vorkommen können, dann ist meine Lösung natürlich wirklich unbrauchbar.habe ich keinerlei Erfahrung mit Regexp in Perl
$text =~ s/\/begin blubber.*?\/end blubber\s*\n?//sg;