Ignoring, for the moment, your misuse of "system" (please do follow Corion's advice - it's dead on target), you could do it this way (a.k.a. "crude but effective"):
#!/usr/bin/perl -w
use strict;
# This is file1
my $error = 10;
print "$error.\n";
#!/usr/bin/perl -w
use strict;
# This is file2
print "Before: ";
# Run the first script
do "file1";
my $new_error_value = 20;
@ARGV = "file1";
{
local $^I = ""; # Enable in-place editing
while (<>){
s/(\$error\s*=\s*)\d+/$1$new_error_value/;
print;
}
}
print "After: ";
# Run the first script
do "file1";
Or, if you really insist on using "system":
#!/usr/bin/perl -w
use strict;
# This is file2
print "Before: ";
# Run the first script
do "file1";
system "/usr/bin/perl", qw{-i -wpe s/(\$error\s*=\s*)\d+/${1}20/ file1
+};
print "After: ";
# Run the first script
do "file1";
Update: Tweaked regex to remove unnecessary parens (just because I'm picky like that. ;)
--
"Language shapes the way we think, and determines what we can think about."
-- B. L. Whorf
|