in reply to Splitting strings

It's hard to tell what might be going wrong with such a small snippet of code... what is in $test before you do the splitting?

Replies are listed 'Best First'.
Re: Re: Splitting strings
by maverick_jt (Initiate) on Apr 08, 2002 at 22:24 UTC
    In this case I am reading WINS address from registry. Problem is that in the w2k registry, both primary and secondary wins address is in one string. I want to split it into two variables and then compare agains other ip addresses.
      I verified that $test has proper data assigned by inserting a print statement.
      --- snip ----
      $test = "$RemoteSystem{'NetBios'}{$nic_service}{NameServerlist}";
      print "$test\n"; #this shows me that $test has proper string assigned
      ($a, $b) = split(/ +/, $test);
      print "$a -- $b\n";
      -------------

        As you have verified that $test contains a string that has whitespace in it the only logical explanation is that the whitespace is not a \040 (space char) but rather is a \t tab char. Otherwise the split would be working as you can easily demonstrate. To split on tabs or spaces or newlines use /\s+/ or for tabs and spaces use /[ \t]+/.

        ($a, $b) = split /\s+/, $test;

        cheers

        tachyon

        s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print

        Your still not giving enough information. What does $test contain? We know it contains the value of
        $RemoteSystem{'NetBios'}{$nic_service}{NameServerlist}
        but what is that value? Is it suppose to be "47.56.1.1 47.57.2.2". If so then
        ($a, $b) = split(/+/, $test);
        wont do the job. In fact in 5.6.1 it spits out an error indicating
        'Quantifier follows nothing before HERE mark in regex m/+ << HERE / at + -e line 1'
        If you are needing to split on '+' then use
        my($var1, $var2) = split(/\+/, $test);

        maybe your looking for something like
        my($var1, $var2) = split ' ', $test;
        to split on white space. But again these are only guesses. Please be more specific as to the data your working with so we can make educated guesses. And you should probably use different variables than $a and $b as those are special sort variables for perl.

        -bn