Forum Webscript.Ru

Программирование => Perl => Тема начата: koliama от 12 Ноября 2004, 17:17:47

Название: Не могу получить uid владельца каталога с пом. ф-ии File::stat
Отправлено: koliama от 12 Ноября 2004, 17:17:47
ДОброго дня всем.

Задача такая - надо получить uid владельца каталогов, которые в свою очередь лежат в определенном каталоге.

Вот мой код

#!/usr/bin/perl -wT

use strict;
use File::stat;
my $dir = "/usr/home/";
opendir(HOME, $dir);

while(my $catalog = readdir HOME)
        {

                my $sb = stat($catalog);
                printf "File is %s, uid %d\\n", $catalog, $sb->uid;
        }
closedir(HOME);
exit;
вот что мне на этот код выдает система

File is ., uid 0
File is .., uid 0
stat() on unopened filehandle File::stat::nik at /usr/local/lib/perl5/5.6.1/File/stat.pm line 49.
Can\'t call method "uid" on an undefined value at ./fstat.pl line 12.
Подскажите плиз, в чем проблема?
Название: Не могу получить uid владельца каталога с пом. ф-ии File::stat
Отправлено: NeoNox от 12 Ноября 2004, 17:42:54
koliama
убери точки из прочитанного каталога.
while(my $catalog = readdir HOME)
{
next if ($catalog =! /^\\.+$/);
Название: Не могу получить uid владельца каталога с пом. ф-ии File::stat
Отправлено: koliama от 12 Ноября 2004, 17:48:28
NeoNox
добавил в свой код эту строку.

#!/usr/bin/perl -wT

use strict;
use File::stat;
my $dir = "/usr/home/";
opendir(HOME, $dir);

while(my $catalog = readdir HOME)
        {
                next if ($catalog =! /^\\.+$/);
                my $sb = stat($catalog);
                printf "File is %s, uid %d\\n", $catalog, $sb->uid;
        }
closedir(HOME);
exit;
выдал следующие ошибки

Use of uninitialized value in pattern match (m//) at ./fstat.pl line 10.
Use of uninitialized value in pattern match (m//) at ./fstat.pl line 10.
Use of uninitialized value in pattern match (m//) at ./fstat.pl line 10.
Use of uninitialized value in pattern match (m//) at ./fstat.pl line 10.
Use of uninitialized value in pattern match (m//) at ./fstat.pl line 10.
Use of uninitialized value in pattern match (m//) at ./fstat.pl line 10.
Use of uninitialized value in pattern match (m//) at ./fstat.pl line 10.
Use of uninitialized value in pattern match (m//) at ./fstat.pl line 10.
не могу понять, что ему не нравится..
Название: Не могу получить uid владельца каталога с пом. ф-ии File::stat
Отправлено: NeoNox от 12 Ноября 2004, 17:57:42
очепятался
while(my $catalog = readdir HOME)
{
next if ($catalog =~ /^\\.+$/);
my $sb = stat($dir.$catalog);
printf "File is %s, uid %d\\n", $catalog, $sb->uid;
}
closedir(HOME);
exit;

обрати внимание на my $sb = stat($dir.$catalog); #полный путь к каталогу
Название: Не могу получить uid владельца каталога с пом. ф-ии File::stat
Отправлено: vladsu от 12 Ноября 2004, 18:21:22
Упс, опередили

use strict;
use File::stat;
my $dir = "c:/usr/bin/";
opendir(HOME, $dir);

while( my $catalog = readdir(HOME) ) {
       next if $catalog =~ /^\\.?\\.$/;
       my $sb = stat($dir.$catalog) or die "No $catalog: $!";
       printf "File is %s, uid %d\\n", $catalog, $sb->uid;
}
closedir(HOME);
exit;
Название: Не могу получить uid владельца каталога с пом. ф-ии File::stat
Отправлено: koliama от 12 Ноября 2004, 18:30:29
NeoNox
да - с таким регекспом работает :)
пасибо большое