http://www.perlmonks.org?node_id=1218987


in reply to exec & system

Hello dideod.yang,

I do not understand how exec can help here, since the documentation states that it never returns. The system command seems more appropriate. Here is an example to help illustrate how you can use the system command to execute your command and to check its exit status. When placed inside the while loop, you can keep executing the shell script until you get the successful exit status of 0. I made my own shell script to randomly generate an exit status of 0 or 1. I show that below as well.

#!/usr/bin/env perl use strict; use warnings; my $status = 1; # Keep trying rand_exit.sh until the exit status is zero while( $status ){ $status = system "./rand_exit.sh"; print "Still trying\n"; sleep 1; } print "Success!\n"; exit;
rand_exit.sh
#!/usr/bin/env bash BINARY=2 T=1 number=$RANDOM let "number %= $BINARY" if [ "$number" -eq $T ] then exit 1; else exit 0; fi
The code will take a random number of iterations to complete. The output will look something like this,
Still trying Still trying Still trying Success!