Ovid has asked for the wisdom of the Perl Monks concerning the following question:
It's late and I'm tired, but I'm banging my head against a silly little problem. It's a long story as to why I need this, but I've stumbled on the following curious problem:
#!/usr/bin/perl use strict; use warnings; use Test::More qw/no_plan/; my $token = '-----'; my $data = "1,2,${token}0${token},4,5"; my $split = qr/(?<!$token),(?!$token)/; my @fields = split $split, $data; my @expected = ( 1,2, "${token}0${token}", 4, 5 ); is_deeply \@fields, \@expected;
I need to be able to split on a value if and only if that value is not immediately preceded and followed by the same fixed-width string. The code above actually assigns the following to @fields:
@fields = ( '1', '2,-----0-----,4', '5' );
It's as if it's doing a logical OR with the two zero-width assertions instead of a logical AND. I suppose it's not unreasonable that it do this, but is there some simple way I can enforce my desired behavior of splitting the resulting string to this?
@fields = ( '1', '2', '-----0-----', '4', '5' );
Also, where is this behavior documented? I'm sure it is somewhere. I just can't find it.
Cheers,
Ovid
New address of my CGI Course.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Zero-width assertions fail with split
by merlyn (Sage) on Sep 19, 2005 at 05:00 UTC | |
by Ovid (Cardinal) on Sep 19, 2005 at 05:06 UTC | |
by hv (Prior) on Sep 19, 2005 at 12:00 UTC | |
by gargle (Chaplain) on Sep 19, 2005 at 06:16 UTC | |
Re: Zero-width assertions fail with split
by BrowserUk (Patriarch) on Sep 19, 2005 at 07:24 UTC | |
Re: Zero-width assertions fail with split
by sk (Curate) on Sep 19, 2005 at 06:50 UTC | |
Re: Zero-width assertions fail with split
by demerphq (Chancellor) on Sep 19, 2005 at 06:30 UTC |