http://qs321.pair.com?node_id=649723


in reply to split string using regex

You have two sets of parentheses in your regular expression that are mutally exclusive. Perl is putting the contents of both $1 and $2 into your array. Since one of those will be undef, perl complains. Rewrite your RE such that there is only one set of parentheses or be sure to discard the undefs.

Update: here's one possibility:

#!/usr/bin/perl use strict; use warnings; my $inp = 'AAA * BBB CCC * * "2000 01 00 00 00" "2004 01 00 00 00"'; my @r = $inp =~ /("[^"]*"|\S+)/g; s/\A"(.*?)"\z/$1/ for @r; $, = "\n"; print @r, "\n";