in reply to expanding the functionality of split

This may or may not achieve your goal. It works for your test data and a few others I have tried but it is by no means fully tested. Whether you would want to retain the standard split functionality as part of this sub is doubtful, but it's there should you prefer to use a single function in all cases.

Update: A slightly cleaner version, removed unused var and standard split functionality.

#! perl -slw use strict; sub mySplit { my ($pattern, $expr) = @_; push @$pattern, '$', ''; my ($n, @fields) = (0); push @fields, $1 while $expr =~ /(.*?)$pattern->[$n]/gc, ++$n < @$ +pattern; return @fields; } my $string = "a:b::c d|e"; my @fields = mySplit [':','::','\s+','\|'], $string; print do{local $"='~'; "@fields";} #" __DATA__ C:\test>218685 a~b~c~d~e

Okay you lot, get your wings on the left, halos on the right. It's one size fits all, and "No!", you can't have a different color.
Pick up your cloud down the end and "Yes" if you get allocated a grey one they are a bit damp under foot, but someone has to get them.
Get used to the wings fast cos its an 8 hour day...unless the Govenor calls for a cyclone or hurricane, in which case 16 hour shifts are mandatory.
Just be grateful that you arrived just as the tornado season finished. Them buggers are real work.

Replies are listed 'Best First'.
Re^2: expanding the functionality of split
by Aristotle (Chancellor) on Dec 10, 2002 at 14:11 UTC
    Not sure all the extra effort for the limit parameter is worth it. <update>Sorry, brainblock. Must get some coffeine.</update>
    my @delim = qw(: :: / // \| \|\| \s+); mySplit \@delim, $str1; mySplit \@delim, $str2, 4;
    is the same as
    my @delim = qw(: :: / / \| \|\| \s+); mySplit \@delim, $str1; mySplit [ @delim[0..2] ], $str2;

    Makeshifts last the longest.

      Sorry? I'm not quite sure what you mean? The only reference/effort I made to the limit parameter was to pass it onto the standard split command if the first parm wasn't an array. Beyond that I ignore it?


      Okay you lot, get your wings on the left, halos on the right. It's one size fits all, and "No!", you can't have a different color.
      Pick up your cloud down the end and "Yes" if you get allocated a grey one they are a bit damp under foot, but someone has to get them.
      Get used to the wings fast cos its an 8 hour day...unless the Govenor calls for a cyclone or hurricane, in which case 16 hour shifts are mandatory.
      Just be grateful that you arrived just as the tornado season finished. Them buggers are real work.