Zeichenkette ersetzen

Begonnen von oldscout, 04 März 2021, 18:02:12

Vorheriges Thema - Nächstes Thema

oldscout

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.
FHEM 5.8 auf Intel Celeron CPU
HM-.*, 1-Wire DS18B20, FritzDect 200, HMLAN, HMUSB, Arduino Uno, ESP8266, Enigma2, FB7490, MySql-DB,TP-Link HS100, RaspiCCU

Beta-User

Falscher Forenbereich (*** Keine Fragethemen starten! Board ist nur für funktionsfähigen Code! ***):
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(".*") }
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

oldscout

#3
Danke für die Tips. Nun geht es, habe es mit DeeSPe's Hinweis umgesetzt.
:)

Bitte ins richtige Forum verschieben?!?
FHEM 5.8 auf Intel Celeron CPU
HM-.*, 1-Wire DS18B20, FritzDect 200, HMLAN, HMUSB, Arduino Uno, ESP8266, Enigma2, FB7490, MySql-DB,TP-Link HS100, RaspiCCU

Beta-User

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.*");
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files