#!/usr/bin/perl -l # use strict; use warnings; my $str = q{jfjsa as,.n d"fdsafjl"jop'fdsjklf fds'457"fjdsklaoir"jkl45;fs ier987543" fsdjkal"}; my $rxSplit = qr {(?x) # Use extended syntax ( # Open capture group (?: # Open group for alternation of "[^"']*" # "whatever" | # or '[^"']*' # 'some other thing' ) # Close alternation group ) # Close capture group }; my @arr = split m{$rxSplit}, $str; print for @arr;