#!/usr/bin/perl
use strict; use warnings; my $xml = "<Katalog Shopid="1">1,2,3,4,5</Katalog><Katalog Shopid="2">7,8,9,10</Katalog>";
foreach my $shopid(1..5){ my $pattern = "<Katalog Shopid="$shopid">.*?</Katalog>"; print "Suche: $pattern \n"; $xml =~ /($pattern)/; if($1){ print $1 ,"\n"; }else{ print "nix gefunden\n"; } }
bringt als Ergebnis:
pummel@linux:~/data/scripts/artkat> ./extractKatalog.pl Suche: <Katalog Shopid="1">.*?</Katalog> <Katalog Shopid="1">1,2,3,4,5</Katalog> Suche: <Katalog Shopid="2">.*?</Katalog> <Katalog Shopid="2">7,8,9,10</Katalog> Suche: <Katalog Shopid="3">.*?</Katalog> <Katalog Shopid="2">7,8,9,10</Katalog> Suche: <Katalog Shopid="4">.*?</Katalog> <Katalog Shopid="2">7,8,9,10</Katalog> Suche: <Katalog Shopid="5">.*?</Katalog> <Katalog Shopid="2">7,8,9,10</Katalog>
ich erwarte eigentlich bei den shopids ab 3 ein 'nix gefunden' Lasse ich die foreach-Schleife weg, und übergebe die shopid einzeln, klappt es. Merkt er sich irgendwie $1 vom letzen Match? Was muss ich ändern, das es klappt?
Mit freundlichen Grüßen
Jens Puruckherr