Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # my regexp matches from the bottom to the top but I'd like it to replace from the top down
- local $/=undef;
- my $DataToParse = <DATA>;
- my $item = "SeaMonkeys";
- my $catNum = "SMKY-1978";
- my $maxInstancesToReplace = 2;
- parseData();
- exit();
- sub parseData {
- for (my $counter = 0; $counter < $maxInstancesToReplace; $counter++) {
- # Stick in a temporary text placeholder that I will replace later after more processing
- $DataToParse =~ s/(.+)sELEMENTs(.+?)s(Item := "$item".+?CatalogNumber := "$catNum.+?END_ELEMENT(.+)/$1 ***** Found $2's $catNum $item. (counter: $counter) *****$3/s;
- }
- print("Here's the result:n$DataToParsen");
- }
- __DATA__
- ELEMENT Kurt (Item := "BrightLite",
- ItemID := 29,
- CatalogNumber := "BTLT-9274",
- Vendor := 100,
- END_ELEMENT
- ELEMENT Mick (Item := "PetRock",
- ItemID := 36,
- CatalogNumber := "PTRK-3475/A",
- Vendor := 82,
- END_ELEMENT
- ELEMENT Kurt (Item := "SeaMonkeys",
- ItemID := 12,
- CatalogNumber := "SMKY-1978/E",
- Vendor := 77,
- END_ELEMENT
- ELEMENT Joe (Item := "Pong",
- ItemID := 24,
- CatalogNumber := "PONG-1482",
- Vendor := 5,
- END_ELEMENT
- ELEMENT Shane (Item := "SeaMonkeys",
- ItemID := 1032,
- CatalogNumber := "SMKY-1978/E",
- Vendor := 77,
- END_ELEMENT
- ELEMENT Kurt (Item := "Battleship",
- ItemID := 99,
- CatalogNumber := "BTLS-5234",
- Vendor := 529,
- END_ELEMENT
- ELEMENT Mick (Item := "SeaMonkeys",
- ItemID := 8,
- CatalogNumber := "SMKY-1978/F",
- Vendor := 77,
- END_ELEMENT
- ELEMENT Frank (Item := "PetRock",
- ItemID := 42,
- CatalogNumber := "PTRK-3475/B",
- Vendor := 82,
- END_ELEMENT
- ELEMENT Joe (Item := "SeaMonkeys",
- ItemID := 8,
- CatalogNumber := "SMKY-1979/A",
- Vendor := 77,
- END_ELEMENT
- my $re=qr/sELEMENTs(.+?)s(Item := "$item".+?CatalogNumber := "$catNum.+?END_ELEMENT/;
- my $re=qr/sELEMENTs(.+?)s(Item := "$item".+?CatalogNumber := "$catNum.+?END_ELEMENT/;
- sub parseData {
- my $re=qr/sELEMENTs(.+?)s(Item := "$item".+?CatalogNumber := "$catNum.+?END_ELEMENT(.+)/;
- foreach my $counter (0..$maxInstancesToReplace) {
- # Stick in a temporary text placeholder that I will replace later after more processing
- $DataToParse =~ s/$re/ ***** Found $1's $catNum $item. (counter: $counter) *****$2/s;
- }
- print("Here's the result:n$DataToParsen");
- }
Add Comment
Please, Sign In to add comment