#! /usr/bin/perl use strict; use warnings; my $ausgabe = 'nichts'; my %mcode = ( 'strichpunkt' => '-.', 'punktstrichstrich' => '.--', ); sub testing { # Eingabe einlesen chomp( my $input = '-. .-- -.' ); # Eingabe an allem, was nicht "." oder "-" ist, splitten # und Stuecke einzeln verarbeiten; # "." muss nicht maskiert werden in Zeichenklasse # "-" auch nicht, wenn es am Anfang oder am Ende steht. # '|' braucht es in Zeichenklassen nicht, um ein "ODER" auszudruecken for my $piece ( split /[^.-]+/, $input ) { for my $chr ( keys %mcode ) { if ( $mcode{$chr} eq $piece ) { # wird bei jedem Treffer bis Ende der Schleifen ueberschrieben $ausgabe = $chr; # Kontrollausgabe print "waehrend: $ausgabe\n"; } } } } # Kontrollausgabe print "vorher: $ausgabe\n"; testing(); # Kontrollausgabe print "nachher: $ausgabe\n";