Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
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 (Parson) 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 chilling in the Monastery: (11)
As of 2014-12-19 08:59 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (75 votes), past polls