#!usr/bin/perl use warnings; use strict; # my ($line)= "4.62399E+09 2.90871E+09 7.17338E+14"; my ($oldline) = "4.62399E+09 2.90871E+09 7.17338E+14"; my ($newline) = "4.62399E+09 2.90871E+09 "; # open (IN, "sdef"); while () { if ($_ =~ /sb1 1.0 142r/ ) { $oldline = substr($line, 10, 38); $newline = substr($oldline, 0, 26); } else { $line = $_; } } close(IN); # chomp($oldline); chomp($newline); print "new = $newline\n"; print "old = $oldline\n"; # open (IN, "sdef"); open (OUT, ">sdef_steel") or die "Cannot open file for writing: $+!" ; while () { s/si1 L 1000 1000 /si1 L 1000 /; # works ok s/2150 2151 1035/2150 2151 /; # works ok s/$oldline/$newline/; # doesn't work s/sp1 D (\d+.\d+E[-+]\d+) /sp1 D /; # works ok print OUT $_; } close (IN); close (OUT);