Beat: Regulärer Ausdruck in Array speichern

Beitrag lesen

Ein vorgegebener String:
   $string=' Produkt1 id="1234" Produkt1 id="9999" Produkt2 id="8888" usw..';
ist gegeben und nun möchte ich alle IDs des Produkt1 in ein Array speichern.
Hatte erst an Substitution gedacht, aber dieser liefert mir in diesem Fall nur die Anzahl:

@array=$string=~s/(Produkt1 id" )(\d)/$2/g;
-----------------------------------^^ ??

2.Möglichkeit wäre, alle Produkt1 Daten in einen seperaten String oder Datei zu schreiben und dann alle IDs zu filtern.

Hat von euch jmd eine "schickere" Lösung?

Du willst hier zwei Schritte in einem tun.
Ich denke aber ein bisschen anders...

my @products = qw(x y z);  
my $parameter= qr/id|somepar/;  
my %prodhash;  
  
foreach my $product ( @products ){  
  while(  
     $string=~ s/*  
        ($product) \s  
        ($parameter)  
        "  ([^"]+) "  
      /$3/gx ){  
    push @{ $prodhash{$1}{$2} }, $3;  
  }  
}

mfg Beat

--
><o(((°>           ><o(((°>
   <°)))o><                     ><o(((°>o
Der Valigator leibt diese Fische