#!/usr/bin/env perl use 5.010; use strict; use warnings; use Text::Balanced qw{extract_multiple gen_delimited_pat}; my $in_string = q{qwe asd 'rty uio p' zxc "vbnm fghj" 123 4 ' @ & '}; my @tokens = extract_multiple($in_string => [ q{ }, gen_delimited_pat(q{'"}) ]); for my $token (@tokens) { next if $token eq q{ }; $token =~ y{'"}{}d; say $token; } #### qwe asd rty uio p zxc vbnm fghj 123 4 @ &