#!/usr/bin/perl -w use strict; use vars qw(%rules); # From the base package sub filter_names { my ($rule_name,@files) = @_; my $rule = $main::rules{ $rule_name }; grep {/$rule/} @files }; %rules = ( INPUT_FILE_DESCRIPTION => "^Remote.*", OTHER_FILES => "^(?!Remote)" ); my @files = ; chomp @files; for my $rule (qw(INPUT_FILE_DESCRIPTION OTHER_FILES)) { print "$rule\n"; print "$_\n" for filter_names($rule, @files); }; __DATA__ Remote1 Other1 Remote2 Other2 Remote3 Another