#!/usr/bin/perl use warnings; use strict; my $file = 'C:/Windows/System32/drivers/etc/hosts'; my %replace = ( '#' => q(), '' => '#' ); open my $In, '<', $file or die $!; open my $Out, '>', "$file.new" or die $!; while (<$In>) { s/(#?)(10\.10\.1\.2)/$replace{$1}$2/; print {$Out} $_; } close $Out or die $!; rename "$file.new", $file or die $!;