my @flags = (); while () { push @flags, /(-D\S+)/g; } use Data::Dump qw(dump); print dump(\@flags); __DATA__ -D__c_plusplus=1 -D__cplusplus=1 \ -D__NAMESPACES -D__STANDARD_CXX \ -D__ghs -Dghs -D__SoftwareFloat \ -D__m68k -Dm68k -D__mc68000 \ -D__m68ec060 -Dm68ec060 __END__ Result: [ "-D__c_plusplus=1", "-D__cplusplus=1", "-D__NAMESPACES", "-D__STANDARD_CXX", "-D__ghs", "-Dghs", "-D__SoftwareFloat", "-D__m68k", "-Dm68k", "-D__mc68000", "-D__m68ec060", "-Dm68ec060", ]