Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Alexander Kamotsky                   2:463/544.9    21 Mar 2002  00:33:26
 To : All
 Subject : упростить getRelativePath
 -------------------------------------------------------------------------------- 
 
 Hаписал функцию для создания относительного пути к файлу или каталогу по двум
 абсолютным... Hо мне кажется, что тут можно как-то красиво соптимизировать.
 Скорость не критична - интерес чисто академический (учу перл).
 
 === Cut ===
 sub getRelativePath
 #   returns relative path from one directory or file to another
 #        params:
 #             $src - source path
 #             $dst - destination path
 {
   my ($src, $dst) = @_;
   my (@srcDirs, @dstDirs, @dstFile, $i1, $i2, $result);
 
   @srcDirs = $src =~ m/([^\/]*\/)/g;
   @dstDirs = $dst =~ m/([^\/]*\/)/g;
   @dstFile = $dst =~ m/[^\/]+$/g;
 
   $i1 = 0;
   $i2 = 0;
   $result = "";
 
   for (;;)
   {
     $dir1 = ($i1 <= $#srcDirs)? $srcDirs[$i1] : "";
     $dir2 = ($i2 <= $#dstDirs)? $dstDirs[$i2] : "";
     last if (!($dir1 eq $dir2));
     $i1++;
     $i2++;
   }
 
   $result = $result. ("../" x ($#srcDirs + 1 - $i1));
 
   for (;$i2 <= $#dstDirs; $i2++)
   {
     $result = $result.$dstDirs[$i2];
   }
 
   if ($#dstFile != -1)
   {
     $result = $result.$dstFile[0];
   }
 
   print $result;
 }
 
 $src = "dep120/rus/events/index.htm";
 $dst = "dep120/images/e.gif";
 
 print "src: $src\ndst: $dst\n";
 
 getRelativePath ($src, $dst);
 === Cut ===
 
 пример работы:
 
 src: dep120/rus/events/index.htm
 dst: dep120/images/e.gif
 ../../images/e.gif
 
 Что мне не нравится: куча массивов, много переменных вообще, отдельная обработка
 имени файла для добавления его в конец...
 
 ? :)
 
  Всего доброго, All.
 
 --- #include <"tearline.cpp">
  * Origin: (-: "ниждиро йынтарбо" (2:463/544.9)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 упростить getRelativePath   Alexander Kamotsky   21 Mar 2002 00:33:26 
 Re: упростить getRelativePath   Artem Chuprina   22 Mar 2002 12:25:30 
 упростить getRelativePath   Alexander Kamotsky   23 Mar 2002 00:31:59 
 Re: упростить getRelativePath   Artem Chuprina   24 Mar 2002 15:09:58 
Архивное /ru.perl/28453c991df0.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional