Собственно, сабж.
Сразу оговорюсь для противников создания велосиподов: я делаю это чисто в целях практики и использоваться это не будет, так что не важна даже его эффективность. Просто в книжке, по которой я сейчас изучаю Perl было задание написать такой алгоритм в целях практики.
В общем-то, написал, но вот очень не нравится он мне - очень уж зависим.
В общем, вот код:
#!/usr/bin/perl -w
$i = -1;
@files = ();
sub FolderFiles
{
$i++;
my ($d_name) = @_;
opendir($d_name, $d_name) || die $!;
while($files[$i] = readdir $d_name)
{
next if $files[$i] =~ /^\\.\\.?$/;
if(-d $d_name.\'/\'.$files[$i])
{
$files[$i] = $d_name.\'/\'.$files[$i];
FolderFiles($files[$i]);
}
$i++;
}
closedir($d_name) || die \'Cannot close: \'.$!;
return @files;
}
@files = grep !/^$/, FolderFiles(\'.\');
$k = 0;
foreach(@files)
{
print $k,":",$_,"\\n";
$k++;
}
Вопрос: почему при выводе возникают предупреждения?
Откуда при прохождении папок возникают пустые элементы массива?
И есть ли в Perl аналог static в ПХП?
Спасибо.