my $data = do{ local (*ARGV, $/) = 'text.file'; <>; }; print "$2,$1,$3" if $data =~ m[(DATE).*?(SOMETHING).*?(SOMETHINGELSE)]s;