>perl -wMstrict -le "my $str = 'a| b||c | 0 '; ;; $_ //= '' for my ($var1, $var2, $var3, $var4, $var5, $var6) = map Trim($_), split m{\|}xms, $str; ;; printf qq{'$_' } for $var1, $var2, $var3, $var4, $var5, $var6; ;; sub Trim { $_[0] =~ s{ \A \s+ | \s+ \z }''xmsg; return $_[0]; } " 'a' 'b' '' 'c' '0' ''