Llevo poco tiempo con Perl y estoy probando unas subrutinas que escribí. Me encuentro con el siguiente error, que no entiendo muy bien a que se debe:
Using bash Syntax Highlighting
Undefined subroutine &main::save_result called at
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
En la línea del error está:
Using perl Syntax Highlighting
y la función es la siguiente (dentro llama a otras funciones y me temo que el error pueda ser a las referencias de las variables):
Using perl Syntax Highlighting
sub save_result {
my ($result,$form,$ext,$name) = @_;
my $today = strftime "%Y_%m_%d", localtime;
my $now = strftime "%H_%M_%S", localtime;
# get path information
chdir '/tmp/';
scandir();
my $folder='results';
check_folder($folder,\@$dirlist);
chdir './results/';
scan_dir();
# check if today user's folder already exists
$folder=''.$name.'_'.$today.'';
check_folder($folder,$dirlist);
# write result into a file, $form, $name, $now
chdir(''.$name.'_'.$today.'');
my $filename = 'result_'.$form.'_'.$name.'_'.$now.'.'.$ext.'';
open (FILENAME, ">$filename");
write (FILENAME, $result);
close(FILENAME);
}
my ($result,$form,$ext,$name) = @_;
my $today = strftime "%Y_%m_%d", localtime;
my $now = strftime "%H_%M_%S", localtime;
# get path information
chdir '/tmp/';
scandir();
my $folder='results';
check_folder($folder,\@$dirlist);
chdir './results/';
scan_dir();
# check if today user's folder already exists
$folder=''.$name.'_'.$today.'';
check_folder($folder,$dirlist);
# write result into a file, $form, $name, $now
chdir(''.$name.'_'.$today.'');
my $filename = 'result_'.$form.'_'.$name.'_'.$now.'.'.$ext.'';
open (FILENAME, ">$filename");
write (FILENAME, $result);
close(FILENAME);
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Las otras funciones a las que llama son las siguientes:
Using perl Syntax Highlighting
sub scandir {
my $dir ='.'; # actual dir
opendir(DIR, $dir) || die "can't opendir $dir: $!";
my @list = readdir (DIR);
foreach $item (@list){
push @dirlist, $item if -d "$dir/$item" && $item ne '.' && $item ne '..';
push @filelist, $item if -f "$dir/$item";
}
$dirlist = \@dirlist;
$filelist = \@filelist;
return($dirlist, $filelist);
}
sub check_folder {
my ($folder, $dirlist) = @_;
my $i=0;
my $found='FALSE';
$dir_size = @dirlist;
while($found eq 'FALSE' && $i<=$dir_size){
if ($dirlist[$i] eq $folder){
$found='TRUE';
}
$i++;
}
if ($found eq 'FALSE') {
mkdir $folder;
}
}
my $dir ='.'; # actual dir
opendir(DIR, $dir) || die "can't opendir $dir: $!";
my @list = readdir (DIR);
foreach $item (@list){
push @dirlist, $item if -d "$dir/$item" && $item ne '.' && $item ne '..';
push @filelist, $item if -f "$dir/$item";
}
$dirlist = \@dirlist;
$filelist = \@filelist;
return($dirlist, $filelist);
}
sub check_folder {
my ($folder, $dirlist) = @_;
my $i=0;
my $found='FALSE';
$dir_size = @dirlist;
while($found eq 'FALSE' && $i<=$dir_size){
if ($dirlist[$i] eq $folder){
$found='TRUE';
}
$i++;
}
if ($found eq 'FALSE') {
mkdir $folder;
}
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Os agradecería cualquier idea o ayuda para resolverlo.
Un saludo.