Loading BUILD/compile-solaris-sparc-purify +4 −4 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ purifying_binaries () if [ -n "$cxxfilt" ] ; then opts="$opts -demangle-program=$cxxfilt" fi opts="$opts -best-effort g++" opts="$opts -best-effort" back=`pwd` cd $dir Loading @@ -76,17 +76,17 @@ purifying_binaries () fi if [ -n "$mode" -a $mode = purify ] ; then gmake CXXLD="purify $opts" $target gmake CCLD="purify $opts gcc" CXXLD="purify $opts g++" $target mv $binary $binary-purify fi if [ -n "$mode" -a $mode = quantify ] ; then gmake CXXLD="quantify $opts" $target gmake CCLD="quantify $opts gcc" CXXLD="quantify $opts g++" $target mv $binary $binary-quantify fi if [ -n "$mode" -a $mode = purecov ] ; then gmake CXXLD="purecov $opts" $target gmake CCLD="purecov $opts gcc" CXXLD="purecov $opts g++" $target mv $binary $binary-purecov fi Loading BitKeeper/etc/logging_ok +2 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,7 @@ miguel@light. miguel@light.local miguel@sartre.local mikael@mc04.(none) mikael@orca.ndb.mysql.com mikron@c-fb0ae253.1238-1-64736c10.cust.bredbandsbolaget.se mikron@mikael-ronstr-ms-dator.local mleich@mysql.com Loading Loading @@ -180,6 +181,7 @@ ram@gw.mysql.r18.ru ram@gw.udmsearch.izhnet.ru ram@mysql.r18.ru ram@ram.(none) ramil@mysql.com ranger@regul.home.lan rburnett@build.mysql.com reggie@bob.(none) Loading Build-tools/Bootstrap +1 −1 Original line number Diff line number Diff line Loading @@ -214,7 +214,7 @@ if (-d $target_dir) @stat= stat("$target_dir/configure.in"); my $mtime= $stat[9]; my ($sec,$min,$hour,$mday,$mon,$year) = localtime($mtime); my $mtime= sprintf("%04d%-02d-%02d-%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min); my $mtime= sprintf("%04d-%02d-%02d-%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min); &logger("Renaming $target_dir to $target_dir-$mtime"); $command= "mv "; Loading Build-tools/Do-compile +18 −8 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ use Sys::Hostname; @config_options= (); @make_options= (); $opt_distribution=$opt_user=$opt_config_env=$opt_config_extra_env=""; $opt_comment=$opt_distribution=$opt_user=$opt_config_env=$opt_config_extra_env=""; $opt_dbd_options=$opt_perl_options=$opt_config_options=$opt_make_options=$opt_suffix=""; $opt_tmp=$opt_version_suffix=""; $opt_bundled_zlib=$opt_help=$opt_delete=$opt_debug=$opt_stage=$opt_no_test=$opt_no_perl=$opt_one_error=$opt_with_low_memory=$opt_fast_benchmark=$opt_static_client=$opt_static_server=$opt_static_perl=$opt_sur=$opt_with_small_disk=$opt_local_perl=$opt_tcpip=$opt_build_thread=$opt_use_old_distribution=$opt_enable_shared=$opt_no_crash_me=$opt_no_strip=$opt_with_archive=$opt_with_cluster=$opt_with_csv=$opt_with_example=$opt_with_debug=$opt_no_benchmark=$opt_no_mysqltest=$opt_without_embedded=$opt_readline=0; Loading @@ -17,6 +17,7 @@ GetOptions( "bdb", "build-thread=i", "bundled-zlib", "comment=s", "config-env=s" => \@config_env, "config-extra-env=s" => \@config_extra_env, "config-options=s" => \@config_options, Loading Loading @@ -110,6 +111,7 @@ $log="$pwd/Logs/$host-$major.$minor$opt_version_suffix.log"; $opt_distribution =~ /(mysql[^\/]*)\.tar/; $ver=$1; $gcc_version=which("gcc"); $opt_comment= "Official MySQL$opt_version_suffix binary" unless $opt_comment; if (defined($gcc_version) && ! $opt_config_env) { $tmp=`$gcc_version -v 2>&1`; Loading Loading @@ -303,7 +305,7 @@ if ($opt_stage <= 1) } $prefix="/usr/local/mysql"; check_system("$opt_config_env ./configure --prefix=$prefix --localstatedir=$prefix/data --libexecdir=$prefix/bin --with-comment=\"Official MySQL$opt_version_suffix binary\" --with-extra-charsets=complex --with-server-suffix=\"$opt_version_suffix\" --enable-thread-safe-client --enable-local-infile $opt_config_options","Thank you for choosing MySQL"); check_system("$opt_config_env ./configure --prefix=$prefix --localstatedir=$prefix/data --libexecdir=$prefix/bin --with-comment=\"$opt_comment\" --with-extra-charsets=complex --with-server-suffix=\"$opt_version_suffix\" --enable-thread-safe-client --enable-local-infile $opt_config_options","Thank you for choosing MySQL"); if (-d "$pwd/$host/include-mysql") { safe_system("cp -r $pwd/$host/include-mysql/* $pwd/$host/$ver/include"); Loading Loading @@ -530,6 +532,10 @@ When running several Do-compile runs in parallel, each build should have its own thread ID, so running the test suites does not cause conflicts with duplicate TCP port numbers. --comment=<comment> Replace the default compilation comment that is embedded into the mysqld binary. --config-env=<environment for configure> To set up the environment, like 'CC=cc CXX=gcc CXXFLAGS=-O3' Loading Loading @@ -684,16 +690,20 @@ sub abort if ($opt_user) { $mail_header_file="$opt_tmp/do-command.$$"; open(TMP,">$mail_header_file"); # Take the last 40 lines of the build log open(LOG, "$log") or die $!; my @log= <LOG>; close LOG; splice @log => 0, -40; my $mail_file="$opt_tmp/do-command.$$"; open(TMP,">$mail_file") or die $!; print TMP "From: mysqldev\@$full_host_name\n"; print TMP "To: $email\n"; print TMP "Subject: $host($uname): $ver$opt_version_suffix compilation failed\n\n"; print TMP @log; close TMP; system("tail -n 40 $log > $log.mail"); system("cat $mail_header_file $log.mail | $sendmail -t -f $email"); unlink($mail_header_file); unlink("$log.mail"); system("$sendmail -t -f $email < $mail_file"); unlink($mail_file); } exit 1; } Loading Build-tools/Do-solaris-pkg 0 → 100644 +183 −0 Original line number Diff line number Diff line #!/usr/bin/perl # # Script to create Solaris packages # $INTERACTIVE= 0; chomp ($hostname= `hostname`); $find = "/usr/bin/find"; $pkgproto = "/usr/bin/pkgproto"; $pkgmk = "/usr/bin/pkgmk -o"; $pkgtrans = "/usr/bin/pkgtrans"; $temp = "/tmp/prototype$$"; $prototype = "prototype"; $pkginfo = "pkginfo"; ($gid ,$pkg ,$uid ,$userInfo ,$email ,$quota ,$group ,$passwd ,$category ,$userHome ,$vendor ,$loginShell ,$pstamp ,$basedir)=(); $fullname = shift @ARGV; $fullname or die "No package name was specified"; -d $fullname or die "That directory is not present!"; $fullname =~ s,/+$,,; # Remove ending slash if any $pkgdir= `cd ../$hostname; pwd`; $pwd = `pwd`; if ($pwd =~ '\/usr\/local') { $pwd = $`; } die "Wrong location, please cd to <PKGBASE>/usr/local/ and run again.\n" if ($pwd eq ""); system ("$find . -print | $pkgproto > $temp"); open (PREPROTO,"<$temp") or die "Unable to read prototype information ($!)\n"; open (PROTO,">$prototype") or die "Unable to write file prototype ($!)\n"; print PROTO "i pkginfo=./$pkginfo\n"; while (<PREPROTO>) { # Read the prototype information from /tmp/prototype$$ chomp; $thisline = $_; if ($thisline =~ " prototype " or $thisline =~ " pkginfo ") { # We don't need that line } elsif ($thisline =~ "^[fd] ") { # Change the ownership for files and directories ($dir, $none, $file, $mode, $user, $group) = split / /,$thisline; print PROTO "$dir $none $file $mode bin bin\n"; } else { # Symlinks and other stuff should be printed as well ofcourse print PROTO "$thisline\n"; } } close PROTO; close PREPROTO; # Clean up unlink $temp or warn "Unable to remove tempfile ($!)\n"; # Now we can start building the package # # First get some info $fullname =~ /^((mysql)-.+)-([\d\.]+)-.+$/ or die "This name is not what I expected - \"$fullname\""; $default{"name"}= $2; $default{"version"}= $3; $default{"pkg"}= $1; $default{"arch"} = `uname -m`; chomp $default{"arch"}; $default{"category"}= "application"; $default{"vendor"}= "MySQL AB"; $default{"email"}= "build\@mysql.com"; $default{"pstamp"}= "MySQL AB Build Engineers"; $os = `uname -r`; $os =~ '\.'; $os = "sol$'"; chomp $os; $default{"basedir"}= "/usr/local"; $default{"packagename"}= "${fullname}.pkg"; # Check for correctness of guessed values by userinput %questions = ( pkg => "Please give the name for this package", name => "Now enter the real name for this package", arch => "What architecture did you build the package on?", version => "Enter the version number of the package", category => "What category does this package belong to?", vendor => "Who is the vendor of this package?", email => "Enter the email adress for contact", pstamp => "Enter your own name", basedir => "What is the basedir this package will install into?", packagename => "How should I call the packagefile?", ); @vars = qw(pkg name arch version category vendor email pstamp basedir packagename); foreach $varname (@vars) { getvar_noq($varname); } if ($INTERACTIVE) { while (!&chkvar()) { print "\n"; foreach $varname (@vars) { getvar($varname); } @vars = qw(pkg name arch version category vendor email pstamp basedir packagename); } } $classes = "none"; # Create the pkginfo file print "\nNow creating $pkginfo file\n"; open (PKGINFO,">$pkginfo") || die "Unable to open $pkginfo for writing ($!)\n"; print PKGINFO "PKG=\"$pkg\"\n"; print PKGINFO "NAME=\"$name\"\n"; print PKGINFO "ARCH=\"$arch\"\n"; print PKGINFO "VERSION=\"$version\"\n"; print PKGINFO "CATEGORY=\"$category\"\n"; print PKGINFO "VENDOR=\"$vendor\"\n"; print PKGINFO "EMAIL=\"$email\"\n"; print PKGINFO "PSTAMP=\"$pstamp\"\n"; print PKGINFO "BASEDIR=\"$basedir\"\n"; print PKGINFO "CLASSES=\"$classes\"\n"; close PKGINFO; print "Done.\n"; # Build and zip the package print "Building package\n"; system ("$pkgmk -r `pwd`"); system ("(cd /var/spool/pkg; $pkgtrans -s -o `pwd` /tmp/$packagename $pkg)"); system ("gzip /tmp/$packagename"); # Clean-up the spool area system ("(cd /var/spool/pkg; rm -rf $pkg)"); # Clean-up the ~/packaging/ area system ("(rm -rf mysql*)"); unlink $pkginfo; unlink $prototype; system ("mv /tmp/${packagename}.gz $pkgdir"); print "Done. (~/$hostname/$packagename.gz)\n"; # The subroutines sub chkvar { print "\n"; print "PKG=$pkg\n"; print "NAME=$name\n"; print "ARCH=$arch\n"; print "VERSION=$version\n"; print "CATEGORY=$category\n"; print "VENDOR=$vendor\n"; print "EMAIL=$email\n"; print "PSTAMP=$pstamp\n"; print "BASEDIR=$basedir\n"; print "PACKAGENAME=$packagename\n"; print "\nIs this information correct? [Y/n]: "; my $answer= <STDIN>; chomp $answer; $answer= 'Y' if ($answer eq ""); $answer= uc $answer; my $res= ($answer eq 'Y')? 1 : 0; return($res); } sub getvar_noq { my $questionname = "@_"; $$questionname = $default{$questionname}; } sub getvar { my $questionname = "@_"; my $ucquestionname= uc $questionname; print "$ucquestionname: $questions{$questionname} [$default{\"$questionname\"}]: "; my $answer = <STDIN>; chomp $answer; $$questionname = $answer; $$questionname = $default{$questionname} if ($$questionname eq ""); } Loading
BUILD/compile-solaris-sparc-purify +4 −4 Original line number Diff line number Diff line Loading @@ -61,7 +61,7 @@ purifying_binaries () if [ -n "$cxxfilt" ] ; then opts="$opts -demangle-program=$cxxfilt" fi opts="$opts -best-effort g++" opts="$opts -best-effort" back=`pwd` cd $dir Loading @@ -76,17 +76,17 @@ purifying_binaries () fi if [ -n "$mode" -a $mode = purify ] ; then gmake CXXLD="purify $opts" $target gmake CCLD="purify $opts gcc" CXXLD="purify $opts g++" $target mv $binary $binary-purify fi if [ -n "$mode" -a $mode = quantify ] ; then gmake CXXLD="quantify $opts" $target gmake CCLD="quantify $opts gcc" CXXLD="quantify $opts g++" $target mv $binary $binary-quantify fi if [ -n "$mode" -a $mode = purecov ] ; then gmake CXXLD="purecov $opts" $target gmake CCLD="purecov $opts gcc" CXXLD="purecov $opts g++" $target mv $binary $binary-purecov fi Loading
BitKeeper/etc/logging_ok +2 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,7 @@ miguel@light. miguel@light.local miguel@sartre.local mikael@mc04.(none) mikael@orca.ndb.mysql.com mikron@c-fb0ae253.1238-1-64736c10.cust.bredbandsbolaget.se mikron@mikael-ronstr-ms-dator.local mleich@mysql.com Loading Loading @@ -180,6 +181,7 @@ ram@gw.mysql.r18.ru ram@gw.udmsearch.izhnet.ru ram@mysql.r18.ru ram@ram.(none) ramil@mysql.com ranger@regul.home.lan rburnett@build.mysql.com reggie@bob.(none) Loading
Build-tools/Bootstrap +1 −1 Original line number Diff line number Diff line Loading @@ -214,7 +214,7 @@ if (-d $target_dir) @stat= stat("$target_dir/configure.in"); my $mtime= $stat[9]; my ($sec,$min,$hour,$mday,$mon,$year) = localtime($mtime); my $mtime= sprintf("%04d%-02d-%02d-%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min); my $mtime= sprintf("%04d-%02d-%02d-%02d:%02d", $year+1900, $mon+1, $mday, $hour, $min); &logger("Renaming $target_dir to $target_dir-$mtime"); $command= "mv "; Loading
Build-tools/Do-compile +18 −8 Original line number Diff line number Diff line Loading @@ -7,7 +7,7 @@ use Sys::Hostname; @config_options= (); @make_options= (); $opt_distribution=$opt_user=$opt_config_env=$opt_config_extra_env=""; $opt_comment=$opt_distribution=$opt_user=$opt_config_env=$opt_config_extra_env=""; $opt_dbd_options=$opt_perl_options=$opt_config_options=$opt_make_options=$opt_suffix=""; $opt_tmp=$opt_version_suffix=""; $opt_bundled_zlib=$opt_help=$opt_delete=$opt_debug=$opt_stage=$opt_no_test=$opt_no_perl=$opt_one_error=$opt_with_low_memory=$opt_fast_benchmark=$opt_static_client=$opt_static_server=$opt_static_perl=$opt_sur=$opt_with_small_disk=$opt_local_perl=$opt_tcpip=$opt_build_thread=$opt_use_old_distribution=$opt_enable_shared=$opt_no_crash_me=$opt_no_strip=$opt_with_archive=$opt_with_cluster=$opt_with_csv=$opt_with_example=$opt_with_debug=$opt_no_benchmark=$opt_no_mysqltest=$opt_without_embedded=$opt_readline=0; Loading @@ -17,6 +17,7 @@ GetOptions( "bdb", "build-thread=i", "bundled-zlib", "comment=s", "config-env=s" => \@config_env, "config-extra-env=s" => \@config_extra_env, "config-options=s" => \@config_options, Loading Loading @@ -110,6 +111,7 @@ $log="$pwd/Logs/$host-$major.$minor$opt_version_suffix.log"; $opt_distribution =~ /(mysql[^\/]*)\.tar/; $ver=$1; $gcc_version=which("gcc"); $opt_comment= "Official MySQL$opt_version_suffix binary" unless $opt_comment; if (defined($gcc_version) && ! $opt_config_env) { $tmp=`$gcc_version -v 2>&1`; Loading Loading @@ -303,7 +305,7 @@ if ($opt_stage <= 1) } $prefix="/usr/local/mysql"; check_system("$opt_config_env ./configure --prefix=$prefix --localstatedir=$prefix/data --libexecdir=$prefix/bin --with-comment=\"Official MySQL$opt_version_suffix binary\" --with-extra-charsets=complex --with-server-suffix=\"$opt_version_suffix\" --enable-thread-safe-client --enable-local-infile $opt_config_options","Thank you for choosing MySQL"); check_system("$opt_config_env ./configure --prefix=$prefix --localstatedir=$prefix/data --libexecdir=$prefix/bin --with-comment=\"$opt_comment\" --with-extra-charsets=complex --with-server-suffix=\"$opt_version_suffix\" --enable-thread-safe-client --enable-local-infile $opt_config_options","Thank you for choosing MySQL"); if (-d "$pwd/$host/include-mysql") { safe_system("cp -r $pwd/$host/include-mysql/* $pwd/$host/$ver/include"); Loading Loading @@ -530,6 +532,10 @@ When running several Do-compile runs in parallel, each build should have its own thread ID, so running the test suites does not cause conflicts with duplicate TCP port numbers. --comment=<comment> Replace the default compilation comment that is embedded into the mysqld binary. --config-env=<environment for configure> To set up the environment, like 'CC=cc CXX=gcc CXXFLAGS=-O3' Loading Loading @@ -684,16 +690,20 @@ sub abort if ($opt_user) { $mail_header_file="$opt_tmp/do-command.$$"; open(TMP,">$mail_header_file"); # Take the last 40 lines of the build log open(LOG, "$log") or die $!; my @log= <LOG>; close LOG; splice @log => 0, -40; my $mail_file="$opt_tmp/do-command.$$"; open(TMP,">$mail_file") or die $!; print TMP "From: mysqldev\@$full_host_name\n"; print TMP "To: $email\n"; print TMP "Subject: $host($uname): $ver$opt_version_suffix compilation failed\n\n"; print TMP @log; close TMP; system("tail -n 40 $log > $log.mail"); system("cat $mail_header_file $log.mail | $sendmail -t -f $email"); unlink($mail_header_file); unlink("$log.mail"); system("$sendmail -t -f $email < $mail_file"); unlink($mail_file); } exit 1; } Loading
Build-tools/Do-solaris-pkg 0 → 100644 +183 −0 Original line number Diff line number Diff line #!/usr/bin/perl # # Script to create Solaris packages # $INTERACTIVE= 0; chomp ($hostname= `hostname`); $find = "/usr/bin/find"; $pkgproto = "/usr/bin/pkgproto"; $pkgmk = "/usr/bin/pkgmk -o"; $pkgtrans = "/usr/bin/pkgtrans"; $temp = "/tmp/prototype$$"; $prototype = "prototype"; $pkginfo = "pkginfo"; ($gid ,$pkg ,$uid ,$userInfo ,$email ,$quota ,$group ,$passwd ,$category ,$userHome ,$vendor ,$loginShell ,$pstamp ,$basedir)=(); $fullname = shift @ARGV; $fullname or die "No package name was specified"; -d $fullname or die "That directory is not present!"; $fullname =~ s,/+$,,; # Remove ending slash if any $pkgdir= `cd ../$hostname; pwd`; $pwd = `pwd`; if ($pwd =~ '\/usr\/local') { $pwd = $`; } die "Wrong location, please cd to <PKGBASE>/usr/local/ and run again.\n" if ($pwd eq ""); system ("$find . -print | $pkgproto > $temp"); open (PREPROTO,"<$temp") or die "Unable to read prototype information ($!)\n"; open (PROTO,">$prototype") or die "Unable to write file prototype ($!)\n"; print PROTO "i pkginfo=./$pkginfo\n"; while (<PREPROTO>) { # Read the prototype information from /tmp/prototype$$ chomp; $thisline = $_; if ($thisline =~ " prototype " or $thisline =~ " pkginfo ") { # We don't need that line } elsif ($thisline =~ "^[fd] ") { # Change the ownership for files and directories ($dir, $none, $file, $mode, $user, $group) = split / /,$thisline; print PROTO "$dir $none $file $mode bin bin\n"; } else { # Symlinks and other stuff should be printed as well ofcourse print PROTO "$thisline\n"; } } close PROTO; close PREPROTO; # Clean up unlink $temp or warn "Unable to remove tempfile ($!)\n"; # Now we can start building the package # # First get some info $fullname =~ /^((mysql)-.+)-([\d\.]+)-.+$/ or die "This name is not what I expected - \"$fullname\""; $default{"name"}= $2; $default{"version"}= $3; $default{"pkg"}= $1; $default{"arch"} = `uname -m`; chomp $default{"arch"}; $default{"category"}= "application"; $default{"vendor"}= "MySQL AB"; $default{"email"}= "build\@mysql.com"; $default{"pstamp"}= "MySQL AB Build Engineers"; $os = `uname -r`; $os =~ '\.'; $os = "sol$'"; chomp $os; $default{"basedir"}= "/usr/local"; $default{"packagename"}= "${fullname}.pkg"; # Check for correctness of guessed values by userinput %questions = ( pkg => "Please give the name for this package", name => "Now enter the real name for this package", arch => "What architecture did you build the package on?", version => "Enter the version number of the package", category => "What category does this package belong to?", vendor => "Who is the vendor of this package?", email => "Enter the email adress for contact", pstamp => "Enter your own name", basedir => "What is the basedir this package will install into?", packagename => "How should I call the packagefile?", ); @vars = qw(pkg name arch version category vendor email pstamp basedir packagename); foreach $varname (@vars) { getvar_noq($varname); } if ($INTERACTIVE) { while (!&chkvar()) { print "\n"; foreach $varname (@vars) { getvar($varname); } @vars = qw(pkg name arch version category vendor email pstamp basedir packagename); } } $classes = "none"; # Create the pkginfo file print "\nNow creating $pkginfo file\n"; open (PKGINFO,">$pkginfo") || die "Unable to open $pkginfo for writing ($!)\n"; print PKGINFO "PKG=\"$pkg\"\n"; print PKGINFO "NAME=\"$name\"\n"; print PKGINFO "ARCH=\"$arch\"\n"; print PKGINFO "VERSION=\"$version\"\n"; print PKGINFO "CATEGORY=\"$category\"\n"; print PKGINFO "VENDOR=\"$vendor\"\n"; print PKGINFO "EMAIL=\"$email\"\n"; print PKGINFO "PSTAMP=\"$pstamp\"\n"; print PKGINFO "BASEDIR=\"$basedir\"\n"; print PKGINFO "CLASSES=\"$classes\"\n"; close PKGINFO; print "Done.\n"; # Build and zip the package print "Building package\n"; system ("$pkgmk -r `pwd`"); system ("(cd /var/spool/pkg; $pkgtrans -s -o `pwd` /tmp/$packagename $pkg)"); system ("gzip /tmp/$packagename"); # Clean-up the spool area system ("(cd /var/spool/pkg; rm -rf $pkg)"); # Clean-up the ~/packaging/ area system ("(rm -rf mysql*)"); unlink $pkginfo; unlink $prototype; system ("mv /tmp/${packagename}.gz $pkgdir"); print "Done. (~/$hostname/$packagename.gz)\n"; # The subroutines sub chkvar { print "\n"; print "PKG=$pkg\n"; print "NAME=$name\n"; print "ARCH=$arch\n"; print "VERSION=$version\n"; print "CATEGORY=$category\n"; print "VENDOR=$vendor\n"; print "EMAIL=$email\n"; print "PSTAMP=$pstamp\n"; print "BASEDIR=$basedir\n"; print "PACKAGENAME=$packagename\n"; print "\nIs this information correct? [Y/n]: "; my $answer= <STDIN>; chomp $answer; $answer= 'Y' if ($answer eq ""); $answer= uc $answer; my $res= ($answer eq 'Y')? 1 : 0; return($res); } sub getvar_noq { my $questionname = "@_"; $$questionname = $default{$questionname}; } sub getvar { my $questionname = "@_"; my $ucquestionname= uc $questionname; print "$ucquestionname: $questions{$questionname} [$default{\"$questionname\"}]: "; my $answer = <STDIN>; chomp $answer; $$questionname = $answer; $$questionname = $default{$questionname} if ($$questionname eq ""); }