Thread Foreach lässt sich nicht speichern !!
(3 answers)
Opened by tobi14 at 2011-03-20 17:13 Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 my $ausgabe; my $chr; sub test { chomp( my $text = "-. .-- -." ); # schliessendes " ergaenzt # woher kommt $input? koennte es auch $text sein? foreach( split(/[^\.|\-]+/, $input) ) { # hier wird ein eigenes $chr als Laufvariable definiert; das ist unabhaengig vom Aeusseren! foreach my $chr ( keys %mcode ) { print $chr if( $mcode{$chr} eq $_ ); #<= hier soll $chr in eine Variable außerhalb der Sub gespeichert werden # $chr ist die Laufvariable der inneren schleife; damit kommst Du # so an die auessere Variable $chr nicht mehr ran... # Benenne die Laufvariable um und weise der aeusseren $chr den # Wert zu, wenn es notwendig ist. } } } $ausgabe = $chr; Edit: Vorschlag zum Probieren: Code (perl): (dl
)
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 34 35 36 37 38 39 40 41 42 43 44 45 46 #! /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"; Last edited: 2011-03-20 17:50:57 +0100 (CET) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |