All pastes #640338 Raw Edit

Anonymous

public text v1 · immutable
#640338 ·published 2007-07-31 10:00 UTC
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);
}