my $grep_source = '<$FILE>'; my @filter_string_array = ('192\.168\.200\.|10\.10\.200',',SEVERE,'); foreach my $filter_string (@filter_string_array){ $grep_string_expansion = 'grep {/' . $filter_string . '/} (' . $grep_source . ')'; $grep_source = $grep_string_expansion; } #string should look like this: grep {/,SEVERE,/} (grep {/192\.168\.200\.|10\.10\.200/} (<$FILE>)); ... my @output = eval $grep_string_expansion;