add_parameter (version 1.0)

You can also look at:
#! /usr/bin/perl

##############################################################################
#
# SYNTAX: add_parameter parfile param value type comment
#
# DESCRIPTION: This utility sets a parameter in a given par file.
# DESCRIPTION: If the parameter does not exist, it is created.
#
# VERSION: 1.0
#
# HISTORY: 0.0 -> 1.0 1999-05-07
# HISTORY: Converted from ksh to perl
#
# CALLS: $UTIL/exception
# CALLS: $UTIL/ftool_test
# CALLS: $FTOOL/pset
#
##############################################################################

($parfile, $param, $value, $type, $comment) = @ARGV;

$FTOOL = $ENV{"FTOOL"};
$UTIL = $ENV{"UTIL"};

if ( ! -w $parfile ) {
    system("$UTIL/exception $0 3 'No write permission for $parfile'");
    exit 3;
}


#chomp($dum = `grep "^${param}," $parfile`);
open PARFILE, "<$parfile";
@parfile_text = <PARFILE>;
$dum = grep /^$param/, @parfile_text;

if ( $dum ) {
    #####################
    # Existing parameter
    #####################
    system("$FTOOL/pset ./$parfile $param = \"$value\" \\
           >stdout${$}.log 2>stderr${$}.log");

    system("$UTIL/ftool_test pset $? $0 1 stdout${$}.log stderr${$}.log");
}
else {
    ##############################
    # Need to add a new parameter
    ##############################

    open PARFILE, ">>$parfile";
    for ($type) {
        /s/ and do {
            ###################################
            # String value - enclose in quotes
            ###################################
            print PARFILE "${param},${type},h,\"${value}\",,,\"${comment}\"\n";
            last;
        };

        /.*/ and do {
            ###################
            # Non-string value
            ###################
            print PARFILE "${param},${type},h,${value},,,\"${comment}\"\n";
            last;
        };
    }

}

exit 0;