Автор Тема: Не могу получить uid владельца каталога с пом. ф-ии File::stat  (Прочитано 3290 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн koliama

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 35
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
ДОброго дня всем.

Задача такая - надо получить 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.
Подскажите плиз, в чем проблема?

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
koliama
убери точки из прочитанного каталога.
while(my $catalog = readdir HOME)
{
next if ($catalog =! /^\\.+$/);
The documentations is your friend

Оффлайн koliama

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 35
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
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.
не могу понять, что ему не нравится..

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
очепятался
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); #полный путь к каталогу
The documentations is your friend

Оффлайн vladsu

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 271
  • +0/-0
  • 0
    • Просмотр профиля
    • http://vladislavsurguchev.eu/
Упс, опередили

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;
----------------------------------------------
Мой сайт чёрно-белых фотографий из разных уголков мира тут

Оффлайн koliama

  • Завсегдатай
  • Новичок
  • *
  • Сообщений: 35
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
NeoNox
да - с таким регекспом работает :)
пасибо большое

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28