LINUX.ORG.RU

PERL


0

0

как узнать где я щас нахожусь(путь)?

getcwd() выдаёт где был запущен скрипт не зависомо от того, что внутри скрипта используется chdir...(

А вообще вопрос к тому, что мне надо написать прогу которая будет шариться по каталогам и искать там какие-нить файлы...но она чёто не работает а в чём дело не пойму...
Вот скрипт, может кто глюк мой увидит:

#!/usr/bin/perl -w

my @allfiles;
find_1('/your/dir');

sub find_1{
chdir($_[0])|| die "Cannot change directory to $_[0]";
}

while(defined($filename=<*>)) {
if (-d $filename){print "$filename is a directory\n";
find_1($filename);

}
else {print $filename," is a file\n";
push @allfiles,$filename;
}
}
}


помогите, если кто знает...

1. perldoc Cwd. 

Что там может не работать - неясно.

2. perldoc File::Find

find sub { -f && push @dirs, $File::Find::name }, "/your/dir";


anonymous
()
Ответ на: комментарий от anonymous

>Я про getcwd. Похоже он "не работает" у тебя одного.

А я не писал что он не работает, я сказал(см.выше) getcwd работает не так как мне надо...т.е. куда-бы я не переходил внутри скрипта getcwd всегда выдаёт путь откуда запущен скрипт...

golodranez ★★★★
() автор топика
Ответ на: комментарий от anonymous

в perldoc Cwd ничего полезного нет, там не написано то что спрашивал...

golodranez ★★★★
() автор топика
Ответ на: комментарий от golodranez

Странно, уменя работает как положено:

$ perl -MCwd -e 'for(qw!/etc /usr /usr/local!){chdir $_; print &getcwd, "\n"}'
/etc
/usr
/usr/local

Свой пример с неправильным getcwd покажи, плиз.

anonymous
()
Ответ на: комментарий от anonymous

видать меня переплющило...щас проверил, вроде работает как ты и говорил...

может поможешь мне разобраться со криптом:
#!/usr/bin/perl -w
use Cwd;
my @allfiles;

find_1('/home/mike/my/mmm');

sub find_1{
    chdir($_[0])|| die "Cannot change directory to $_[0]";
    print "Dir - ",getcwd(),"\n";
       
   while(defined($filename=<*>)) {
      if (-d $filename){print "$filename is a directory\n";
          find_1("$filename");
	  
	 }
      else {print $filename," is a file\n";
         push @allfiles,$filename;
	 }
   }
}

он должен шариться по каталогам и файлы искать, а он какой то фигнёй занимается...вот пример:
есть дерево каталогов:
/1
--1
----we
--22
/2
/3
--re
----er
------qw
/4
/5

запускаем скрипт, он выводит:

./1.pl
Dir - /home/mike/my/mmm
1 is a directory
Dir - /home/mike/my/mmm/1
2 is a file
3 is a file
4 is a file
5 is a file
1 is a directory
Dir - /home/mike/my/mmm/1/1
22 is a file
we is a directory
Dir - /home/mike/my/mmm/1/1/we

мало того, что он не везде пошарился, так он ещё некоторые директории файлами обозвал...

может посмотришь, в чём косяк ?

golodranez ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.