Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re: Re: How can I use 'split' with unknown amount of variables?

by steves (Curate)
on Dec 30, 2001 at 12:07 UTC ( [id://135223]=note: print w/replies, xml ) Need Help??


in reply to Re: How can I use 'split' with unknown amount of variables?
in thread How can I use 'split' with unknown amount of variables?

I think bladex may be referring to the split behavior many people forget about: by default it strips null fields off the end. So if one line is: one|two|three|four but the next is five|six|| then the first split gets a 4 element array, the second gets a two element array. This can cause problems if the application always wants 4 fields regardless. The way around that is to use the seldom used 3rd arrgument to split, LIMIT. If you know how many fields you'll always have, set it to that number. Otherwise set it to a negative value to always keep null fields in each split line. See the docs for details or I can elaborate further.

  • Comment on Re: Re: How can I use 'split' with unknown amount of variables?

Replies are listed 'Best First'.
Re: Re: Re: How can I use 'split' with unknown amount of variables?
by mrbbking (Hermit) on Dec 30, 2001 at 18:34 UTC

    steves is right. I use split's LIMIT argument from time to time. It's quite handy.

    This illustration prints each element on separate line, showing the nulls:

    #!/usr/bin/perl -w use strict; my $item1 = "1,2,3,4,5"; my $item2 = "a,b,c,,"; my @split1 = split( /,/, $item1, 5); my @split2 = split( /,/, $item2, 5); # better yet, to set the size of the array at run-time... # my @split2 = split( /,/, $item2, ($#split1 + 1)); print "item1 has " . ( $#split1 + 1) ." elements:\n"; foreach(@split1){ print "'$_'\n"; } print "\nitem2 has " . ( $#split2 + 1) ." elements\n"; foreach(@split2){ print "'$_'\n"; }

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://135223]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others sharing their wisdom with the Monastery: (4)
As of 2024-04-16 06:26 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found