El problema estoy seguro que viene del "getstore" pero el tema es que en $file no me llega a meter la página entera que le estoy pasando.
Aquí esta el código: se trata de una subrutina a la que le llega $1 que es un mail.
Using perl Syntax Highlighting
sub checkFogBugzAssignation {
@_ == 1 || die "Usage: checkFogBugzAssignation case\n";
INFO("======================================");
my ($case) = @_;
INFO("$0: checking case $case");
my $page =
"http://10.0.0.7/default.asp?"
. "token=jam472x&cmd=search&q=$case&cols=ixBug,sStatus,sPersonAssignedTo,latestEvent";
my $file = "fogcase.html";
my $status = getstore( $page, $file );
DEBUG("$0: page for case $case succesfully stored")
if is_success($status);
open( FILE, $file );
my ( $statusFound, $activeFound, $assignedToFound, $mailFound ) = ( 0, 0, 0, 0 );
my $mail;
while (<FILE>) {
my $line = $_;
#DEBUG("Line: $line");
if ( !$mailFound ) {
if ($statusFound) {
if ($activeFound) {
if ($assignedToFound) {
if ( $line =~ /Email:\s*(\w+)(\@)/ ) {
$mailFound = 1;
$mail = $1;
DEBUG("$0: User found: $mail");
close FILE;
INFO("================================");
return $mail;
}
}
else {
if ( $line =~ /Assigned to/ ) {
$assignedToFound = 1;
DEBUG("Assigned found: $line");
}
}
}
else {
if ( $line =~ /Active/ ) {
$activeFound = 1;
DEBUG("Active found: $line");
}
}
}
else {
if ( $line =~ /Status/ ) {
$statusFound = 1;
DEBUG("Status found: $line");
}
}
}
else {
close FILE;
exit 1;
}
} #while(<FILE>)
close FILE;
WARN("$0: ERROR: case $case is possibly not active!");
INFO("==========================");
exit 1;
}
@_ == 1 || die "Usage: checkFogBugzAssignation case\n";
INFO("======================================");
my ($case) = @_;
INFO("$0: checking case $case");
my $page =
"http://10.0.0.7/default.asp?"
. "token=jam472x&cmd=search&q=$case&cols=ixBug,sStatus,sPersonAssignedTo,latestEvent";
my $file = "fogcase.html";
my $status = getstore( $page, $file );
DEBUG("$0: page for case $case succesfully stored")
if is_success($status);
open( FILE, $file );
my ( $statusFound, $activeFound, $assignedToFound, $mailFound ) = ( 0, 0, 0, 0 );
my $mail;
while (<FILE>) {
my $line = $_;
#DEBUG("Line: $line");
if ( !$mailFound ) {
if ($statusFound) {
if ($activeFound) {
if ($assignedToFound) {
if ( $line =~ /Email:\s*(\w+)(\@)/ ) {
$mailFound = 1;
$mail = $1;
DEBUG("$0: User found: $mail");
close FILE;
INFO("================================");
return $mail;
}
}
else {
if ( $line =~ /Assigned to/ ) {
$assignedToFound = 1;
DEBUG("Assigned found: $line");
}
}
}
else {
if ( $line =~ /Active/ ) {
$activeFound = 1;
DEBUG("Active found: $line");
}
}
}
else {
if ( $line =~ /Status/ ) {
$statusFound = 1;
DEBUG("Status found: $line");
}
}
}
else {
close FILE;
exit 1;
}
} #while(<FILE>)
close FILE;
WARN("$0: ERROR: case $case is possibly not active!");
INFO("==========================");
exit 1;
}
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4
Tengo que evaluar si existen las palabras de los if, pero ya desde el principio, si muestro la variable $file veo que no está toda la página cargada, y en la siguiente iteración apenas hay una línea de la página, y la tercera vez ya ni la hace.
Lo suyo es que me cargue la URL y me compruebe que son correctas todas las comprobaciones de los if. Necesito llegar al return $mail.
A quien pueda ayudarme: HELP.
Gracias y un saludo a todos.