Reguläre Ausdrücke sind Perls große Stärke und eingebaute Syntax: $text =~ /muster/ prüft, ob ein Muster passt. Mit Gruppen ( ) fängst du Teile ein ($1, $2), mit s/alt/neu/g ersetzt du, mit tr/a-z/A-Z/ wandelst du Zeichen um. Optionen wie i (Groß-/Kleinschreibung egal) und g (global) stehen hinter dem Muster.
Viele andere Sprachen haben Perls Regex-Syntax übernommen.
use strict;
use warnings;
my $text = "Mia (17) wohnt in Berlin, Tom (22) in Hamburg.";
if ($text =~ /(\w+) \((\d+)\)/) {
print "Erster Treffer: $1 ist $2\n"; # Mia ist 17
}
my @alter = $text =~ /\((\d+)\)/g; # alle Zahlen in Klammern
print "Alter: @alter\n"; # 17 22
(my $kurz = $text) =~ s/\s+in\s+\w+//g; # Orte entfernen
print "$kurz\n";Merke
=~ /muster/prüft,s///ersetzt- Gruppen liefern
$1,$2 - Optionen:
i(egal),g(global)
Aufgabe
Finde alle E-Mail-ähnlichen Wörter (mit @) in einem Text.