FHEM Forum

FHEM => Sonstiges => Thema gestartet von: oldscout am 04 März 2021, 18:02:12

Titel: Zeichenkette ersetzen
Beitrag von: oldscout am 04 März 2021, 18:02:12
Hallo,
folgender Code funktioniert nicht mehr, ich erhalte dann folgenden Fehler:
Auszug:

my @liste = fhem("list db_g8b.*");
@liste =~ s/\n/,/g;


Fehlermeldung beim Speichern dann:


Can't modify private array in substitution (s///) at ./FHEM/99_MyDBRepUtils.pm line 108, near "s/\n/,/g;"


Das lief eigentlich schon ewig so, habe auch nix daran geändert und finde das Problem nicht.

Kann mir jemand weiterhelfen?
Es soll nur das "\n" durch ein Komma ersetzt werden.

Danke schön.
Titel: Antw:Zeichenkette ersetzen
Beitrag von: Beta-User am 04 März 2021, 18:20:13
Falscher Forenbereich (*** Keine Fragethemen starten! Board ist nur für funktionsfähigen Code! *** (https://forum.fhem.de/index.php/topic,47490.msg392041.html#msg392041)):
ZitatIn diesem Board bitte keine Themen mit Fragen starten, sondern ausschließlich funktionsfähige Codeschnipsel posten.

Ansonsten als Anschubser für die Kommandozeile:
{ join q{,}, devspec2array(".*") }
Titel: Antw:Zeichenkette ersetzen
Beitrag von: DeeSPe am 04 März 2021, 18:26:18
Benutze einfach:
my @liste = devspec2array("db_g8b.*");
Dann hast Du ein Array mit allen passenden Namen und hast auch keine Zeilenumbrüche drin.
Ein Ersetzen geht eigentlich auch nur im Scalar und nicht im Array. Warum das bisher so gegangen sein soll erschliesst sich mir nicht.

Gruß
Dan
Titel: Antw:Zeichenkette ersetzen
Beitrag von: oldscout am 05 März 2021, 06:44:59
Danke für die Tips. Nun geht es, habe es mit DeeSPe's Hinweis umgesetzt.
:)

Bitte ins richtige Forum verschieben?!?
Titel: Antw:Zeichenkette ersetzen
Beitrag von: Beta-User am 05 März 2021, 09:46:18
Zitat von: oldscout am 05 März 2021, 06:44:59
Bitte ins richtige Forum verschieben?!?
Das kannst du selbst (unter dem ersten Beitrag unten links ist ein Knopf dafür). Und im Anfängerbereich angepinnt findest du auch die Anleitung, wie du das auf [gelöst] setzt ;) .

Und hier noch zur Ergänzung der Weg, um das direkt in einen SCALAR zu packen (was eigentlich beabsichtigt zu sein scheint):
my $liste = join q{,}, devspec2array("db_g8b.*");