use strict; use warnings; use Data::Dumper; my $test="[1,2second,3third,fourth]"; my ($list) = $test =~ /\[ ( [^\]] ) \]/x; my @var = split /,/, $list; print Dumper \@var;