perl/script and retval
    Garrett Cooper 
    youshi10 at u.washington.edu
       
    Sun Apr  8 16:35:17 UTC 2007
    
    
  
Olivier Regnier wrote:
> Hello,
> 
> I written a small script in sh :
> # Downloading doc files
> echo "===> Downloading doc files"
> /usr/bin/csup $doc_supfile
> RETVAL=$?
> if [ $RETVAL != 0 ]; then
>    echo "abort"
>    exit 0
> fi
> 
> I want to rewritte this code in perl script.
> 
> my $retval=0;
> my $doc_supfile="/etc/doc-supfile";
> 
> # Downloading doc files
> print "===> Downloading doc files\n";
> system("/usr/bin/csup $doc_supfile
> if (! $retval) {
> print "abort";
> exit;
> }
> I don't know what happened with retval but that doesn't work correctly.
> 
> Can you help me please ?
> 
> Thank you :)
Olivier,
	Why are you doing this all in perl? Doesn't Bourne shell suffice :)?
Try:
====================================
#!/usr/local/bin/perl -w
use strict;
local $?=0;
my $doc_supfile="/etc/doc-supfile";
print "===> Downloading doc files\n";
system "/usr/bin/csup $doc_supfile";
my $retval = $?; # make sure to grab exit val right after execution;
		 # this can shoot you in the foot if you do it later on
		 # down the line, and another command has been executed
		 # behind the scenes.. Also read perldoc -f system for
		 # more details on return codes because $retval doesn't
		 # necessarily match the exit code that your shell may
		 # see.
unless($retval) {
	print "CVsup aborted\n";
	exit $retval;
}
====================================
See perldoc perlvar.
Cheers,
-Garrett
    
    
More information about the freebsd-questions
mailing list