opi: regexp - Leerzeichen ausschneiden

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

--
Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|
  1. Hallo,

    ich würde split vwerwenden, weil es schneller ist als regexp.

    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."
    1. 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

      --
      Selfcode: ie:( fl:( br:^ va:) ls:] fo:) rl:( n4:? ss:| de:] ch:? mo:|
      1. 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."