while (<>) { chomp; while ( / (\w+) # Name ($1) \s* # Spaces (optional) = # Equal sign \s* # Spaces (optional) ( ' # Quote [^']* # Non-quotes ' # Quote | # -or- [^'\s]+ # Non-spaces|quotes ) /xg ) { my ($name, $expr) = ($1, $2); $expr = substr($expr, 1, -1) if substr($expr, 0, 1) eq "'"; print("var: $name, expr: $expr\n"); } }