in reply to Replacing duplicate string
Read the file in paragraph mode as others have suggested then process each paragraph by spliting into words and the separating whitespace (by capturing the whitespace you split on), doing the substitution when appropriate.
use strict; use warnings; open my $inFH, q{<}, \ <<EOD or die qq{open: <<HEREDOC: $!\n}; Class control priority 5 Class voip priority 30 Class video priority 40 Class control priority 10 Class voip priority 25 Class video priority 45 EOD { local $/ = q{}; while( <$inFH> ) { my $foundPriority = 0; $_ = join q{}, map { unless( m{\bpriority\b} ) { ; } elsif( $foundPriority ++ ) { s{priority}{bandwidth}; } else { ; } $_; } split m{(\s+)}; print; } } close $inFH or die qq{close: <<HEREDOC: $!\n};
The output
Class control priority 5 Class voip bandwidth 30 Class video bandwidth 40 Class control priority 10 Class voip bandwidth 25 Class video bandwidth 45
I hope this is useful.
Cheers,
JohnGG
|
|---|