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


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Denis Poznyakov                      2:5020/400     04 Aug 2003  18:22:58
 To : Sergey Ermakov
 Subject : Re: include
 -------------------------------------------------------------------------------- 
 
 >      Имеется парсер файлов, который обрабатывает директиву include..
 >      Он открывает файл, читает его, находит эту директиву, открывает файл
 
 по
 
 > указанному пути и читает его.. Затем закрывает и возвращается к исходному
 > файлу.. При этом используются два хендлера (MAIN и TEMP, к примеру)..
 >
 >      Как бы организовать чтение include из второго открытого файла и
 
 вообще
 
 > говоря, сделать цепочку вложенных файлов бесконечной?.. Ведь для этого
 > потребуется иметь динамически формируемый файловый хендлер, не так ли?..
 
 >>start++++++++++++++++
 
 #!/usr/bin/perl
 
 my $put_dir='D:/path2file';
 
 $temp=$ARGV[0];
 $temp=~ s/\\/\//ig;
 
 $full_src=getfile($temp);
 $full_name=substr($temp,rindex($temp,'/')+1);
 
 $full_name=~ s/\.(.{2,})/\.collect\.$1/i;
 print "PUT TO: $put_dir\/$full_name\n";
 open TT, ">$put_dir\/$full_name";print TT $full_src;close TT;
 
 sub getfile {
 my ($filename,$dpath)=@_;
 $filename=~ s/\\/\//ig;
 
 my $filepath;
 if ($dpath) {
     $filepath=$dpath;
 } else {
     $filepath=substr($filename,0,rindex($filename,'/')+1);
 #    print $filepath,"\n";
     $filename=substr($filename,rindex($filename,'/')+1);
 #    print $filename,"\n";
 }
 if ($filename=~ /\//) {
     $filepath.=substr($filename,0,rindex($filename,'/')+1);
     $filename=substr($filename,rindex($filename,'/')+1);
 }
 
 print $filepath||'N/A',"\t $filename\n";
 my $file_src='';
 {
     my $n=$/;
     $/=undef;
     open(TT, $filepath.$filename) or die $!;
     $file_src=<TT>; close TT;
     $/=$n;
 }
 
 while ($file_src=~
 /<\!--\#include(\s+)(virtual|file)=(\"|\'|)(.*?)(\"|\'|)(\s+|)-->/im) {
     $file_src=~
 s/<\!--\#include(\s+)(virtual|file)=(\"|\'|)(.*?)(\"|\'|)(\s+|)-->/getfile($
 4,$filepath)/eim
 }
 $file_src=~ s/^\'(.*?)$//igm;
 $file_src=~ s/\n{2,}/\n/igm;
 return qq~
 <!--******************* $filepath.$filename >>*******************-->
 $file_src
 <!--*******************<< $filepath.$filename *******************-->
 ~;
 }
 
 <<end++++++++++++++++
 
 некогда написаный скриптец, ему параметром
 передавалось имя файла и
 внутрях указывалась дира как абсолютный путь к файлам для
 подключения
 
 ..все было написано побыстряку, так что на всякого рода
 стрикты не
 обращайте внимания (ломает окультуривать)
 
 еще можно посмотреть CGI::SSI
 
 ===================================
 Denis Poznyakov
 http://www.pvdlab.net
 pvdenis@yahoo.com | pvdenis@pvdlab.net
 icq: 5915230
 phone: +375-29-6257816
 ===================================
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

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

 Тема:    Автор:    Дата:  
 include   Sergey Ermakov   28 Jul 2003 23:45:06 
 Re: include   Yury Kopyl   29 Jul 2003 08:37:09 
 Re: include   Ilia Vinokurov   30 Jul 2003 10:44:07 
 Re: include   Valentin Nechayev   31 Jul 2003 00:16:54 
 Re: include   Artem Chuprina   01 Aug 2003 17:12:42 
 Re: include   Denis Poznyakov   04 Aug 2003 18:22:58 
Архивное /ru.perl/65770dbaedf4.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional