I don't know about your full disk (I actually never used CGI), but there are a few things you may want to change:
- You should either use autodie or check the return value of open.
- You probably meant s/</</g
- m< /domain.com$ >x will match "/domain/com", "/domainacom" ... (See quotemeta)
- You could do only one while loop with the flip flop operator:
while(<IN>) { next if 1../The mail system/; # The condition will be true from line + 1 until "The mail system" # Code here }
Edit: and having two nested loop with $_ as a loop variable doesn't help readability. Besides, while does not localize $_, so you are actually changing the content of the @files array every time you read a line (each element of @files is aliased to $_, and you write a line in $_).
Edit again: and just to prove what I'm saying:
use v5.14; use Data::Dumper; my @list = 1..3; for (@list) { print while (<DATA>); } say Dumper \@list; __DATA__
$VAR1 = [ undef, undef, undef ];
In reply to Re: Runaway CGI script
by Eily
in thread Runaway CGI script
by Pascal666
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |