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

mrras25 has asked for the wisdom of the Perl Monks concerning the following question:

This is probably simple but I am not able to wrap my head around this one -

I have a subroutine that checks to see if a status is 0 yet - what I would like is loop through until the status returns 0. How would I do this?

# Code to loop sub routine checkCopyStat ????? #sub routine sub checkCopyStat { my $clTyp = shift; $status = 0; open OUT, ">/usr/local/emc/bin/temp.txt" or die "unable to open fil +e: $! \n"; my $name = "LUN 120 DB"; # for test purposes my $navicmd = `naviseccli -address $spa -user $nviusr -password $nv +ipwd -scope global clone -listclone -Name "$name" -cloneid $copies{$c +lTyp} -Clonestate -PercentSynced`; print OUT "$navicmd"; #put contents into a temporary file close(OUT); open FILE, "< /usr/local/emc/bin/temp.txt" or die "unable to open f +ile: $! \n"; my %hash; while (<FILE>) { my ($col1, $col2) = (split /:/, $_)[0,1]; chomp($col1,$col2); if(!$col1) {next;} if(!$col2) {next;} $hash{$col1} = $col2 } foreach my $key(%hash) { if($hash{'CloneState'} =~ /Consistent/) { $status = 0; }elsif($hash{'CloneState'} =~ /Synchronizing/) { $status = $hash{'PercentSynced'}; } else { print "State Unknown for clone\n"; $status = -1; } } close(FILE); unlink('/usr/local/emc/bin/temp.txt'); return($status); }