rendered paste body#!/usr/bin/perl -w
# copyright by Marc H. Thoben <marc@thoben.org>
# 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 = <FILE>))
{
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);
}