use strict; use warnings; use Tie::File; $| = 1; my $filename = 'REMOTEopen.xml'; tie my @array, 'Tie::File', $filename or die "Cannot tie file $filename to array: $!"; for my $line (@array) { my $newline = $line; while ($line =~ / < Node \s* Name="(.*?)" .*? Password="(.*?)" .*? > /mgx) { my $name = $1; my $password = $2; print "Enter the plain text password for $name, ", "password is currently $password\n"; chomp(my $newpass = <>); print "You will now swap $password for $newpass\n"; print "Continue? (y/n)\n"; chomp(my $answer = <>); $newline =~ s{\Q$password\E}{$newpass} if $answer =~ /y/i; } $line = $newline; print "Press to continue..."; <>; } untie @array or die "Cannot untie file '$filename': $!";