Dear Perl Gurus,
I have some problems that I think are a result of how my Switch statement is
written.
This script is invoked via a web browser to upload a file, and do a few other
things.
However it appears that the user system / network, or my script is stalling. So
the user clicks the button a second and a third time before the script has
finished. The system admin has made me aware that this script is maxing out the
CPU usage of server. He is not happy....
I thought have surrounding a portion of the code and putting in an if
block ...
if (!$state) {
do lots of stuff related to file upload...
}
$state could be read and written to and store a 0 for ready to do something,
or a 1 for, 'busy now, don't brother me'......
Another issue to improve the performance of the script
was to move stuff inside a switch block, but I am not sure how this would
impact scope :
SWITCH: {
if ($action =~ /Upload/) {
use Fcntl qw( :DEFAULT :flock );
use constant MAX_FILE_SIZE => 2 * 1_048_576; # Limit each upload to 2 MB
use constant MAX_DIR_SIZE => 10 * 1_048_576; # Limit total uploads to 10 MB
use constant MAX_OPEN_TRIES => 100;
last SWITCH;
};
--
if ($action =~ /AnotherCmd/) {
### is order backwards on these next two lines?
exit;
last SWITCH;
}
Could some comment on using Switch or Case statements vers If {} else blocks
Thanks...
Dave Gilden
PS: I am not sure of syntax that I should be using for Switch I have seen
several variants
as I have read documentation today....
--- what I have now----
use CGI qw/:standard/;
use CGI;
use Fcntl qw( :DEFAULT :flock );
use CGI::Carp qw(fatalsToBrowser);
use strict;
use switch;
my $action = $q->param( "action" );
SWITCH: {
if ($action =~ /Upload/) {
last SWITCH;
};
if ($action =~ /Update/) {
print redirect("./import_clean_csv.php");
exit;
last SWITCH;
};
if ($action =~ /Clean/) {
my @filesToRemove;
chdir UPLOAD_DIR or die "Couldn't chdir to _data directory: $!";
opendir(DR,"./");
@filesToRemove = grep {$_ =~ /^(\w[\w.-]*)/} readdir DR;
closedir DR;
print $HTML_HEADER;
print '<div align="center">';
foreach my $fr (@filesToRemove) {
print "Deleted $fr<br>\n";
unlink($fr) or die "Couldn't Delete $fr $!";
}
print <<HTML_OUT;
<p class="top-header">Your Done close this window!
<form><input type="button" onclick="self.close()" value="Close
Window"></form></p>
</div>
HTML_OUT
print end_html;
exit;
last SWITCH;
};
}
#more....
__END__
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>