#!usr/bin/perl use strict; use warnings; my $fpath = shift @ARGV; open (my $fh, '<', $fpath) || die "Failed to open $fpath : $!"; my $matches = 0; ## counter for how many matches we have made while (<$fh>){ if ( /^(filename\s\"LKTA_mic) ## find start of name and capture it \d+ ## number bit - don't capture (\.cfg\"\;\s\}$) ## end bit - capture /gx ){ ## print out line with number modified based on how many matches we have seen print "$1".(($matches % 4) + 1)."$2\n"; ## increment match counter ++$matches; } else { ## didn't match so pump it straight out unmodified print $line; } }; close $fh || die "Failed to close $fpath : $!";