#!/usr/bin/perl -w # copyright by Marc H. Thoben # licensed under GPL v2 and above use strict; use Fcntl; use File::Basename; use File::Glob qw(:globally :nocase); # the tag to be modified my %convert_hash = ( # name => format "maxvelocity" => "%.3f" # # format: # %d: 500 # %.2f: 1.23 # %.6f: 4.567890 ); # the tag specified above will be multiplied by this value my $convert_value = "1.15"; # don't touch values below my $units_folder = "units"; my $target_folder = "converted"; my @filenames; my $filename; my $new_filename; my $new_filename_path; if(not(-d $units_folder && -r $units_folder)) { print "Cannot read from folder \"", $units_folder, "\"!\n"; exit 1 } @filenames = <$units_folder/*>; if(not(@filenames)) { print "Did not find any files in the \"", $units_folder, "\" folder!\n"; exit 1 } if(not(-d $target_folder && -w $target_folder)) { print "Creating main target folder: ", $target_folder, "\n"; mkdir($target_folder) or die "Cannot create folder \"", $target_folder, "\"!\n"; } else { print "Re-/move the folder \"", $target_folder, "\" first!\n"; print "Will not overwrite possibly existing files... Exiting.\n"; exit 1 } foreach my $parameter (@filenames) { $filename = $parameter; $new_filename = $target_folder . "/" . basename($filename); print "File: ", $filename, "\n => ", $new_filename, "\n"; my $line; sysopen(FILE, $filename, O_RDONLY) or die "Error reading ", $filename, "!\n"; sysopen(NEW_FILE, $new_filename, O_CREAT|O_WRONLY, 0644) or die "Error creating ", $new_filename, "!\n"; while(defined($line = )) { foreach my $key (keys %convert_hash) { if($line =~ /\b$key\b/i) { $line =~ s/\b$key=(.*?);/sprintf("%s=$convert_hash{$key};", lc($key), $1*$convert_value)/ieg; print "***** ", lc($key), " found and changed! *****\n"; } } print NEW_FILE $line; } close(NEW_FILE); close(FILE); }