Date: Sun, 08 Apr 2007 09:35:10 -0700 From: Garrett Cooper <youshi10@u.washington.edu> To: freebsd-questions@freebsd.org Subject: Re: perl/script and retval Message-ID: <461919BE.7080903@u.washington.edu> In-Reply-To: <46190C84.4080907@steelbox.org> References: <46190C84.4080907@steelbox.org>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?461919BE.7080903>
