in reply to How do i get the variables to actually get in here....

You're using = instead of =~ on the line with the regex. That alone will make the script not work. Look in perlop and perlre for more information on =~ and regexes, if you're interested.

That regex looks awfully complicated to me. I think you should look into using split instead (in perlfunc). I can't say for sure whether this will work without seeing your input data, but it seems pretty likely given that all your regex contains is permutations of \W and \w.

One additional point, don't use while (defined(<>)). <> is always defined until end-of-file, and I don't think that form assigns the result of <> to $_. Use while (<>) instead.

Update: turns out = will do the right thing in this case, at least according to dragonchild (see next post). Oh well, it was probably the while (defined(<>)) bit anyway...

Replies are listed 'Best First'.
Re: Re: How do i get the variables to actually get in here....
by dragonchild (Archbishop) on Nov 07, 2001 at 02:55 UTC
    Actually, he wants to be using =, not =~. =~ says to use the variable on the left as the thing to perform the regex on. If there is no source, $_ =~ is automatically put in at the left of the regex. As he wants to assign the results of the regex, performed on $_, to the lvalues, = is correct.

    This is actually a very common thing to do when parsing something that split doesn't work nicely on. Again, that's his example data. So, = and a regex are exactly the right calls here. (I spent 3 hours Friday working with similar data that was almost fixed-delimited, but wasn't, so I had to move away from unpack to a regex and it worked perfectly. Yes, they're complicated, but they work.)

    (I didn't realize this at the time, but this is my 500th node!)

    ------
    We are the carpenters and bricklayers of the Information Age.

    Don't go borrowing trouble. For programmers, this means Worry only about what you need to implement.