Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris

Re: To split with spaces

by 0day (Sexton)
on Aug 04, 2013 at 19:13 UTC ( #1047819=note: print w/replies, xml ) Need Help??

in reply to To split with spaces

Try: @fields = split(/\s/,$line);

Replies are listed 'Best First'.
Re^2: To split with spaces
by gorkemsarikaya (Novice) on Aug 05, 2013 at 01:11 UTC
    Firstly, thank you for your quick answer.

    My input data is exactly:

    1234 2321 0 45 1st 2122 sdsa 0 0 34 2313 dsad 43 2nd 1232 ffff 0 0 1st 3213 sadf 0 34 2133 dada 0 2nd

    As it is seen, there is different number of spaces between columns. So /\s/ is not working as well as /\s+/ is not working, because some columns have whitespace characters. Also substr function does not work due to same reason. Substr does not see whitespace character and passes to next column. I hope told my problem clearly:)

      Your data is in fixed-width fields. The third column always starts at the same character position one line after another. substr would work just fine for this. Given the example data you posted, you just need to start at the 15th position, and read two characters. In other words, my $third_col = substr $line, 15, 2;

      In fact, it's possible that you could just start at the 16th position and read a single character, but I would need to know more about the input data before I could be sure.

      Anyway, for the data you posted, this works fine:

      use v5.14; say unpack( 'x15A2' ) =~ s/^\s+|\s+$//gr while <DATA>; __DATA__ 1234 2321 0 45 1st 2122 sdsa 0 0 34 2313 dsad 43 2nd 1232 ffff 0 0 1st 3213 sadf 0 34 2133 dada 0 2nd

      I used unpack instead of substr, but either one would work fine.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1047819]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (7)
As of 2018-05-25 06:07 GMT
Find Nodes?
    Voting Booth?