#!/usr/bin/perl use strict; use warnings; use File::Find; my $opsys = $^O; my $hostname = qx |uname -a| or die("Can't get info for hostname: $!\n"); my @uname = split (/\s/, $hostname); my $searchdir = '/dir/etc-test'; print ">>> Operating System: $opsys" . "\n"; print ">>> Hostname: $uname[1]\n"; open (my $FH, '<', 'ipmastr') or die "Could not open 'ipmaster' : $!"; while (<$FH>){ chomp; my ($ipold, $ipnew, $nmold, $nmnew, $dgold, $dgnew, $ns1old, $ns1new, $ns2old, $ns2new, $ip6old, $ip6new) = split (/\t/); $^I = '.bak'; find(\&wanted, $searchdir); sub wanted { my $filename = $File::Find::name; print "$ipold - Filename is: $filename\n"; return unless -f $filename; open (FR, '<', '$filename') or print "Could not read $filename\n" && return; my @lines = ; close (FR); open (FW, '>', '$filename') or print "Could not open for write $filename\n" && return; for ( @lines ) { s/$ipold/$ipnew/g; print FW $_; } close FW; } } close $FH;