Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^2: How to get split $var to work like split ' '?

by QM (Vicar)
on Sep 10, 2013 at 16:31 UTC ( #1053315=note: print w/ replies, xml ) Need Help??


in reply to Re: How to get split $var to work like split ' '?
in thread How to get split $var to work like split ' '?

I'd like the split ' ' behavior, unless changed from the command line option. Something like this:

my $split_pattern = ' '; # default ... # $split_pattern might get changed here from a command line option $split_pattern = $foo if $bar; ... $line = " one two three \n"; my @words = split $split_pattern, $line; for my $i (0..$#words) { print "$i: ($words[$i])\n"; } # Expected output for default case 0: one 1: two 2: three # Actual output for default case 0: () 1: () 2: () 3: (one) 4: (two) 5: (three) 6: () 7: () 8: ( )

-QM
--
Quantum Mechanics: The dreams stuff is made of


Comment on Re^2: How to get split $var to work like split ' '?
Select or Download Code
Re^3: How to get split $var to work like split ' '?
by Laurent_R (Prior) on Sep 10, 2013 at 17:19 UTC

    Now, I understand what you are looking for, it wasn't clear to me so far. If you store ' ' into a variable, you don't get the expected behavior as if you hard code:

    my @fields = split ' ', $line;

    Using "qr/\s+/;" as a split pattern improves the result but still does not yields what you want (you still get an extra empty element at the beginning of the array).

    Well, then I don't see any real simple direct solution. Even something like this:

    my @fields = split $pattern? $pattern : ' ', $line;

    does not do what you are looking for. The only solutions I can think of are either to use the above "qr/\s+/;" and shift the first element if empty, or use a if else construct, or yet this equivalent construct:

    my @fields  = defined $pattern? split $pattern, $line : split ' ', $line;

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (5)
As of 2015-07-05 09:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (61 votes), past polls