#!/usr/bin/perl use warnings; use strict; my ($input, $waiver) = @ARGV; open my $fh_w, '<', $waiver or die "$waiver: $!"; my @filters; while (<$fh_w>) { my ($mask, $value) = split; $mask =~ s/\*/.*/g; push @filters, [ $mask, $value ]; } open my $fh_i, '<', $input or die "$input: $!"; while (<$fh_i>) { my ($key, $space, $value) = split /(\s+)/; for my $filter (@filters) { $value = $filter->[1], last if $key =~ /$filter->[0]/; } print "$key$space$value\n"; }