(Name|Age|Gender) \s+ = \s+ ( \S+ ) #### #!/usr/bin/env perl -l use strict; use warnings; use Text::CSV; my @terms = qw{Name Age Gender}; my $re = '(' . join('|', @terms) . ') \s+ = \s+ ( \S+ )'; my $csv = Text::CSV->new(); while (my $row = $csv->getline(\*DATA)) { print "*** $row->[0] ***"; for (@$row) { print "$1: $2" while /$re/gx; } } __DATA__ Person1, Name = Lydia, Age = 20, Gender = F Person2, Name = Carol, Age = 54, Profession = Student, Gender = F, Height = 4'8 Person3, Name = Andy, Age = 37, Location = USA, Gender = M, Weight = 117 Person4, Name = Nick, Age = 28, Gender = M #### *** Person1 *** Name: Lydia Age: 20 Gender: F *** Person2 *** Name: Carol Age: 54 Gender: F *** Person3 *** Name: Andy Age: 37 Gender: M *** Person4 *** Name: Nick Age: 28 Gender: M