Liebe Perl Experten,
ich würde gerne für eine Text2Speech mehrere Strings ersetzen.
Beispiel einfach:
my $find;
my $replace;
$find="EG.WZ.";
$replace="Wohnzimmer ";
$mystring =~ s/\Q$find\E/$replace/g;
Das klappt auch super, nur möchte ich einige Strrings ersetzen und das würde ich
gerne mit einer foreach Schleife lösen.
$stringreplace["0"]["EG.WZ."]["Wohnzimmer"];
$stringreplace["1"]["EG.WC."]["Gaeste WC"];
....
Kann mir einer bei den Arrays helfen?
du benötigst ein hash:
Dieser Code macht so etwas ähnliches. Ich lese damit den CPU Verbrauch von TOP aus. Du benötigst wahrscheinlich keine geschachtelte Schleife, und mußt die while-Schleife ersetzen. Ich habe alles so gelassen, damit ich nichts fehlerhaftes veröffentliche.
Wenn du Fragen hast einfach hier in den Thread schreiben:
my $hash = {};
$hash->{idle}{REG} = '(\d+\.\d+)% idle';
$hash->{zip}{REG} = '(\d+\.\d+) gzip';
$hash->{smb}{REG} = '(\d+\.\d+) /sbin/smbd';
my $idx;
my $ges = 0;
foreach my $proc (keys %{$hash}) {
$idx = 0;
pos $res, 1;
my $reg = $hash->{$proc}{REG};
while ($res=~/$reg/g ){
my $p = pos $res;
$idx++;
}
}
Cool habe es hinbekommen! Danke!
my $matrix = {};
$matrix->{'EG.WZ'}{REG} = 'Wohnzimmer';
$matrix->{'EG.WC.'}{REG} = 'Gaeste-WC';
$matrix->{'UG.WK'}{REG} = 'Waeschekeller';
$matrix->{'CUL'}{REG} = 'USB Sendestick';
$matrix->{': on'}{REG} = 'eingeschaltet';
$matrix->{': off'}{REG} = 'ausgeschaltet';
my $idx;
foreach my $suchen (keys %{$matrix}) {
$idx = 0;
pos $mystring, 1;
my $ersetzen = $matrix->{$suchen}{REG};
while ($mystring=~/$suchen/g ){
my $p = pos $suchen;
Log(3,"suchen: $suchen ersetzen: $ersetzen");
$mystring =~ s/\Q$suchen\E/$ersetzen/g;
$idx++;
}
}