in reply to problems splitting ugly input data
That one almost works, except that I end up with an extra (empty) value in $stuff2[0],
That's because using split there will always be an implied empty field preceding the first tag. You could just shift it off the array before building your hash.
Personally, I think I'd use m/// for this:
#! perl -slw use strict; use Data::Dump qw[ pp ]; $Data::Dump::WIDTH = 50; my %hash = do{ local $/; <DATA> } =~ m[(TAG\d=)\s+(.+?)(?=TAG|\Z)]gsm; pp \%hash; __DATA__ TAG1= data TAG2= more data TAG3= even more data that sometimes has = and runs on to more than one line TAG4= still more
Produces:
c:\test>junk15 { "TAG1=" => "data\n", "TAG2=" => "more data\n", "TAG3=" => "even more data that sometimes has = and\nruns on to more +\nthan one line\n", "TAG4=" => "still more", }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: problems splitting ugly input data
by Anonymous Monk on Dec 23, 2010 at 00:54 UTC | |
by BrowserUk (Patriarch) on Dec 23, 2010 at 01:33 UTC | |
by Anonymous Monk on Dec 23, 2010 at 03:34 UTC |