Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[Perl] -- Regex zum entfernen von POD-Kommentaren

Empfohlene Antworten

Veröffentlicht

Wir brauchen für statistische Überprüfungen unseres Perl-Codes die Möglichkeit, pod-Kommentare zu entfernen und durch die gleiche Anzahl an Newlines zu ersetzen.

Wir haben also den String $code und der sieht so aus:

sub foo { return 'bar' };

=head 

POD-Kommentar

=cut

sub bar { return 'foobar' };
Hier müssen wir jetzt den gesamten POD-Kommentar entfernen, so, dass aus dem Skript
sub foo { return 'bar' };




sub bar { return 'foobar' };
wird. Warum? Um z.B. "dieses Modul wird mit 'use Modul;' eingebunden..." nicht in die "dieses Modul nutzt dies und das"-Statistiken mitzunehmen. Ich hatte dazu auf die Schnelle diesen Regex hier entwickelt:
$code =~ s#(?:\R|^)(?:=.+?)\R=cut(?:\R|$)#"\n"x((${^MATCH}=~tr{\n|\r}{}))#segp;
Nur leider funktioniert er nicht ganz bei Kommentaren mit mehreren Überschriften. Wenn wir also
sub foo { return 'bar' };

=head

POD-Kommentar 

=head2

POD-Kommentar 2

=cut

sub bar { return 'foobar' };
haben, würde diese Regex daraus nur
sub foo { return 'bar' };

=head

POD-Kommentar 




sub bar { return 'foobar' };

machen. Wie kann man sowas als Regex realisieren? Einen extra Parser dafür möchte ich nicht schreiben und wir können auch PPI usw. nicht benutzen.

Auch wenn ich etwas länger gebraucht habe, um Deinen Regex verstehen zu können, kann ich darin keinen Fehler entdecken. Dein Beispiel funktioniert bei mir (Ubuntu, Perl 5.14.2) entsprechend einwandfrei:

sub foo { return 'bar' };






sub bar { return 'foobar' };

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.