wrapping the old password with \Q\E means that it will remain unchanged evidenced by : The sentence remain unchanged, so why do \q\e instead of just doing s{$password}{$newpass}s{Password=\Q$password\E}{Password=$newpass} if $answer =~ /y/i;
The script I ended working with is , do you have any recommendations or critque, and also can you suggest how I could get it to update immediately to the file instead of waiting till the loop ends?my $sentence = 'The quick brown fox jumped over the lazy dog'; my $substring = 'quick.*?fox'; $sentence =~ s{\Q$substring\E}{big bad wolf};
#!/usr/bin/perl use strict; use warnings; use Tie::File; my $filename = '/home/stain/Downloads/REMOTEopen.xml'; tie my @array, 'Tie::File', $filename || die "Cannot tie file $filenam +e to array: $!"; foreach my $line (@array) { my $newline = $line; # Make a copy 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 = <>); # Change the copy $newline =~ s{$password}{$newpass} if $answer =~ /y/i; } $line = $newline; # Update this line in the file } untie @array or die "Cannot untie file '$filename': $!";
In reply to Re^4: Script won't run
by cbtshare
in thread Script wont run
by cbtshare
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |