Forum Webscript.Ru

Программирование => Perl => Тема начата: Yuraz от 08 Августа 2002, 12:43:07

Название: Вывод названия файлов директории
Отправлено: Yuraz от 08 Августа 2002, 12:43:07
Делаю так

opendir (DIR, ".") or die "Cannot open current directory";
@list=join ("::", readdir(DIR));
closedir DIR;
for ($i=0;$i<@list;$i++)
  {
  ($name)=split(/::/,@list[$i]);
  print "$name

";
  }

Это последний вариант, печатает или сплошняком или наоборот ничего, пробовал также glob, но она возвращает с полным путём тоже самое. Или проблема в том что не правильно в массив забиваю или достаю.... Надо показать просто директорию. Но что бы уже из массива, а не из

print join ("
", glob(\'*\'));

Помогите!
Название: Вывод названия файлов директории
Отправлено: lalex от 08 Августа 2002, 13:17:49
Попробуй так:
opendir (DIR, ".") or die "Cannot open current directory";
@files=readdir DIR;
close DIR;
foreach (@files) {print "$_

" unless -d $_}
Название: Вывод названия файлов директории
Отправлено: Yuraz от 08 Августа 2002, 16:08:33
Вот сделал скрипт, выводит заданную директорию с возможностью грохнуть файлы, может кому понадобится:


#!/usr/local/bin/perl

$dir="c:/usr/local/server-ini/www/upload";

$script="cgi-bin/dir.pl";

if ($ENV{\'REQUEST_METHOD\'} eq "POST")
    {
      read(STDIN, $bufer, $ENV{\'CONTENT_LENGTH\'});
    }
elsif ($ENV{\'REQUEST_METHOD\'} eq "GET")
    {
      $bufer=$ENV{\'QUERY_STRING\'};
    }

@pairs = split(/&/, $bufer);
foreach $pair (@pairs)
      {
        ($name, $value) = split(/=/, $pair);
        $name =~ tr/+/ /;
        $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $name =~ s///g;
        $name =~ s/<([^>]|\\n)*>//g;
        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        $value =~ s///g;
        $input{$name} = $value;
      }

$del=$input{del};

print "Content-type: text/html; charset=windows-1251\\n\\n";

if($del)
{
unlink ("$dir/$del");
print "";
print "";
print "";
print "

!

";
print "";
exit;
}
opendir (DIR, "$dir/.") or die "Cannot open current directory";
@files=readdir DIR;
close DIR;
for($i=2;$i<@files;$i++)
{
print " • File: $files[$i] | Delete
"
}