Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Веб-программирование > Perl
Перезагрузить страницу Если из run_used.pl убрать вызов инклюда то выводится весь файл
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
NoD NoD вне форума
Member
 
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.06.2006
По умолчанию Если из run_used.pl убрать вызов инклюда то выводится весь файл - 10.12.2007, 14:56

Столкнулся с ситуацией, совершенно не понимаю в чем дело.
Код:
package TestInc;

BEGIN {
use Exporter();
@ISA = "Exporter";
@EXPORT =  ("&include");
}

sub include {
    ($filename)=@_;
    open File, $filename;

    while ($line=<File>){
    while ($line=~/([^{]*){{([^}]+)}}(.*)/){
        print $1;
        do $2;
        $line=$3;
        }
    print $line;    
   }

close File;
    }
    
return 1;
test.pl
Код:
use TestInc;

include('123.txt');
123.txt
Цитата:
12312{{run.pl}}11
fdf{{run_used.pl}}ff
wdfdw
run.pl
Код:
use TestInc;

print 'run...OK';
run_used.pl
Код:
use TestInc;

include('1.txt');
1.txt
Цитата:
run_used...OK
при запуске test.pl выводиться только
Цитата:
12312run...OK11fdfrun_used...OKff
если из run_used.pl убрать вызов инклюда то выводится весь файл. Помогите, пожалуйста, разобраться в чем проблема

ps. прощу прощения в заголовке опечатался, mod_perl
Ответить с цитированием
  (#2 (permalink)) Старый
NoD NoD вне форума
Member
 
Сообщений: 29
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.06.2006
По умолчанию 10.12.2007, 16:27

Решение проблемы найдено. Нужен локальный дескриптор файла. Решение ниже

TestInc.pm
Код:
package TestInc;

BEGIN {
use Exporter();
@ISA = "Exporter";
@EXPORT =  ("&include");
}

use IO::File;

sub include {
    ($filename)=@_;
    my $File=IO::File->new($filename) or die "can't open $filename";
    while ($line=<$File>){
    while ($line=~/([^{]*){{([^}]+)}}(.*)/){
        print $1;
        do $2;
        $line=$3;
        }
    print $line;    
   }

close $File;
    }
    
return 1;
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как открыть файл, если он не открывается Анастасия555 Любые вопросы от новичков 9 30.01.2012 10:51
Не выводится изображение на монитор. kmalex Любые вопросы от новичков 20 11.12.2011 22:38
не выводится результат rinat1980 Visual Basic 2 08.12.2011 19:00
Если я увеличил файл подкачки Deyl Любые вопросы от новичков 5 25.01.2011 21:45
Нужен ли файл подкачки если оперативной памяти на ПК достаточно? Технарь Любые вопросы от новичков 4 24.06.2008 04:11
Почему выводится 65532 вместо -4 kr0nix Assembler 4 12.12.2007 01:31
Как сохранить файл, если такой уже есть toshkaexe C++ Builder 14 15.02.2007 14:59
Как дать ссылку на файл если ..... Сер_ёжа Visual Basic 1 28.10.2005 17:09
Инфа с таблиц, выводится не в том порядке! russel-shf PHP 2 24.01.2005 09:40
Как убрать кнопку Пуск и запретить вызов диспетчера задач Myrus C++ Builder 5 05.07.2004 02:42
В браузер выводится текст программы. Помогите.... mAhr PHP 14 15.06.2004 08:29



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов