regexp - Leerzeichen ausschneiden

- perl
Halli hallo,
folgendes...
Ich habe Zeilen, die wie folgt ausschauen können:
parm=value1,value2
parm = value1, value2
parm=value1,value2
parm = value1, value2
Wie filter ich nun am besten die Daten aus dieser Zeile?
Ich habe da zwar etwas
if (/^(\s+|)(\w+)(\s+|)=(\s+|)(.*)(\s+|)$/) {
$conf->{$2} = $5;
}
aber das schaut irgendwie verbesserungswürdig aus.
Natürlich würde es auch so gehen
if (/^(.*)=(.*)$/) {
$1 =~ s/\s+//g;
$2 =~ s/^\s+//;
$2 =~ s/\s+$//;
$conf->{$1} = $2;
}
aber das finde ich noch schrecklicher.
Wie würdet Ihr das formulieren?
Greez,
opi
Hallo,
ich würde split vwerwenden, weil es schneller ist als regexp.
gruss
Hallo,
ich würde split vwerwenden, weil es schneller ist als regexp.
split hatte ich zuvor verwendet, aber schneller sah das nicht aus:
if (/.*=.*/) { # zuerst die Prüfung
my ($n,$v) = split /=/, $_; # dann die Filterung
$n =~ s/\s+//g; #
$v =~ s/^\s+//; # und dann noch die Verarbeitung
$v =~ s/\s+$//; #
$conf->{$n} = $v;
}
Ich dachte, ich könnte mir die Verarbeitung in der If-Bedingung ersparen, da ich ja sowieso schon mit regexp in der Bedingung selber arbeite.
Greez,
opi
Hallo,
was möchtest du eigentlich machen?
wenn du nur
param=value,value
in
$h->{param}='value,value';
basteln willst
~~~perl
foreach(@data){
$=~s/\s//g;
my ($p,$values)=split(/=/,$);
$h->{$p}=$values;
}
natürlich nur, wenn in den einstellungen keine leerzeichen erlaubt sind.
gruss
--
no strict;
no warnings;
"May I introduce you to OSX. It even runs on cheap intel hardware."
"I doubt that. It could run on cheap intel hardware, but Apple will restrict to expensive Apple hardware, which consists of cheap Intel hardware."